HDU 1016 Prime Ring Problem(深搜)

#include<iostream>#include<algorithm>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>using namespace std;int pv[50];int n;int p[50];int v[50];void getprime(){for(int i=1;i<50;i++){pv[i] = 1;}for(int i=1;i<=41;i++){int pi = sqrt(i);for(int j=2;j<=pi;j++){if(i%j == 0){pv[i] = 0;break;}}}}void DFS(int cnt,int x){if(cnt == n && pv[p[n-1]+p[0]] == 1){for(int i=0;i<n;i++){if(i == 0){printf("%d",p[i]);}else{printf(" %d",p[i]);}}printf("\n");return ;}for(int i=2;i<=n;i++){if(pv[i+x] == 1 && v[i] == 0){p[cnt] = i;v[i] = 1;DFS(cnt+1,i);v[i] = 0;}}}int main(){getprime();int k = 0;while(scanf("%d",&n)!=EOF){memset(v,0,sizeof(v));printf("Case %d:\n",++k);p[0] = 1;v[1] = 1;DFS(1,1);printf("\n");}return 0;}

,年轻是我们唯一拥有权利去编织梦想的时光

HDU 1016 Prime Ring Problem(深搜)

相关文章:

你感兴趣的文章:

标签云: