UVA-542 Prime Ring Problem
2017-05-20 09:55
169 查看
#include<cstdio> #include<iostream> #include<cstring> using namespace std; const int maxn = 1000; int prime[maxn]; int A[maxn]; int vis[maxn]; int is_prime(int x)//生成素数 { for(int i = 2; i*i <= x; i++) if(x%i == 0) return 0; return 1; } void dfs(int n, int cur) { // for(int i = 1; i <= cur; i++) // printf(i==1 ? "%d" : " %d", A[i]); // printf("\n"); if(n < cur && prime[A +1])//判断首尾和是素数 { for(int i = 1; i <= n; i++) printf(i==1 ? "%d" : " %d", A[i]); printf("\n"); return; } else { for(int i = 2; i <= n; i++) { if(prime[A[cur-1]+i] && !vis[i]) //保证相邻的两个数是素数而且没有重复的数 { vis[i] = 1; A[cur] = i; dfs(n, cur+1); vis[i] = 0; A[cur] = 0; } } } } int main() { int n; for(int i = 2; i <= maxn; i++) prime[i] = is_prime(i); // for(int i = 0; i <= maxn; i++) // cout << prime[i] << endl; int t = 0; while(scanf("%d", &n) == 1 && n) { memset(A, 0, sizeof(A)); memset(vis, 0, sizeof(vis)); if(t) printf("\n"); printf("Case %d:\n", t+1); A[1] = 1; dfs(n, 2); t++; } return 0; }
相关文章推荐
- UVa524 - Prime Ring Problem 枚举排列模板题
- uva 524 Prime Ring Problem
- UVA 524 Prime Ring Problem (暴力预处理)
- UVA524- Prime Ring Problem
- UVa 524 Prime Ring Problem【回溯】
- UVa-524 - Prime Ring Problem
- uva 524 prime ring problem——yhx
- uva 524 Prime Ring Problem
- uva 524 - Prime Ring Problem
- UVa 524 Prime Ring Problem(DFS , 回溯)
- uva 524 - Prime Ring Problem
- uva 524 prime ring problem——yhx
- UVa 524:Prime Ring Problem(回溯)
- UVa 524 Prime Ring Problem (例题7-4)
- HDU 1016 && Uva 524 Prime Ring Problem(素数环)
- 紫书搜索 例题7-4 UVA - 524 Prime Ring Problem
- UVa 524 - Prime Ring Problem
- UVa 524 - Prime Ring Problem
- Prime Ring Problem UVA - 524
- Prime Ring Problem(UVA 524)