2013蓝桥杯真题 金蝉素数(DFS)-CSDN博客

53 阅读1分钟

源代码(Java) 

import java.util.*;
public class Main
{
    static boolean isPrime(int n)
    {
        if(n<=1) return false;
        for(int i=2; i*i<=n; i++){
            if(n%i==0) return false;
        }
        return true;
    }
    
    static void f(int[] x, int k)
    {
        if(_____________________){
            if(isPrime(x[0]*10000 + x[1]*1000 + x[2]*100 + x[3]*10 + x[4]) &&
                isPrime(x[1]*100 + x[2]*10 + x[3]) &&
                isPrime(x[2]))
                System.out.println(""+x[0]+x[1]+x[2]+x[3]+x[4]);
            return;
        }
        
        for(int i=k; i<x.length; i++){
            {int tmp=x[k]; x[k]=x[i]; x[i]=tmp; }
            f(x,k+1);
            {int tmp=x[k]; x[k]=x[i]; x[i]=tmp; }
        }
    }
    
    static void test()
    {
        int[] x = {1,3,5,7,9};
        f(x,0);
    }
    
    public static void main(String[] args)
    {
        test();
    }
}

 该题不知为何只能用Java(我还不会),不过还是可以看得懂的,该题也是非常的眼熟啊

非常符合我们曾经总结过的dfs的模板啊(还不熟悉的同学块回去复习DFS(深度优先搜索算法)入门_ZZZWWWFFF_的博客-CSDN博客

如果对dfs熟悉的同学应该一眼看出该空要我们填的就是dfs的出口

还是比较简单的直接k>=x.length就是了