HDU 1016 素数环 深度优先搜索(DFS)

来源:互联网 发布:常用服务器端口有哪些 编辑:程序博客网 时间:2024/06/05 11:08
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int a[12]={2,3,5,7,11,13,17,19,23,29,31,37},f[20],v[20];int n;int is_prime(int x){     for(int i=0;i<13;i++)     {          if(x==a[i])               return 1;     }     return 0;}void print_an(){     printf("%d",f[1]);     for(int i=2;i<=n;i++)          printf(" %d",f[i]);     printf("\n");}int dfs(int x,int y){     if(y==n)     {          if( is_prime(f[y]+f[1]) )               print_an();     }     else     {          int p=0;          for(int i=1;i<=n;i++)          {               if(v[i]==0)               {                    if( is_prime(i+f[y]) )                    {                         v[i]=1;f[y+1]=i;                         dfs(i,y+1);                         v[i]=0;                    }               }          }     }     return 0;}int main(){     int q=0;     while(scanf("%d",&n)!=EOF)     {          q++;          printf("Case %d:\n",q);          memset(v,0,sizeof(v));          v[1]=1;          f[1]=1;          dfs(1,1);          printf("\n");     }     return 0;}