标签:
6 8
Case 1: 1 4 3 2 5 6 1 6 5 2 3 4 Case 2: 1 2 3 8 5 6 7 4 1 2 5 8 3 4 7 6 1 4 7 6 5 8 3 2 1 6 7 4 3 8 5 2
#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(深搜)
标签:
原文地址:http://blog.csdn.net/yeguxin/article/details/46700293