HDOJ1016(标准dfs)

标准DFS模板:

#include <iostream> 

#include <cstdio>

#include <cstring>

using namespace std;

int isPrime[40]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,1}; 

int vis[21];

int A[21];



void dfs(int index,int n)

{

    if(index==n&&isPrime[A[index-1]+A[0]])

    {

        printf("%d",A[0]);

        for(int i=1;i<n;i++)

            printf(" %d",A[i]);

        printf("\n");

        return ;

    }

    for(int i=2;i<=n;i++)

    {

        if(!vis[i]&&isPrime[i+A[index-1]])

        {

            vis[i]=1;

            A[index]=i;

            dfs(index+1,n);

            vis[i]=0;

        }

    }

    

}



int main()

{

    int n;

    int T=0;

    while(scanf("%d",&n)!=EOF)

    {

        printf("Case %d:\n",++T);

        if(n%2==1)

            continue;

        memset(A,0,sizeof(A));

        A[0]=1;

        dfs(1,n);

        printf("\n");

    }

    

    

    return 0;

} 

 

你可能感兴趣的:(DFS)