HDU 1016(dfs)
2014-01-11 14:32
281 查看
题意:给一个数n,求1~n围成一个圆环,圆环相邻的两个数相加为质数,输出所有可能。
#include <iostream> #include <string.h> #include <math.h> #include <stdio.h> using namespace std; bool prim[40]; int num[25]; bool used[25]; //筛法 void is_prim() { memset(prim,0,sizeof(prim)); prim[0]=prim[1]=1; int sq=sqrt((double)40); for(int i=2;i<sq;i++) for(int j=i*i;j<40;j+=i) prim[j]=1; } void dfs(int root,int n,int t) { //数组从1开始,工n个数,当t>n时,说明n个数已排好序 if(t>n&&!prim[num +num[1]]) { for(int j=1;j<n;j++) printf("%d ",num[j]); printf("%d\n",num ); return; } for(int i=1;i<=n;i++) { if(!prim[root+i]&&!used[i]) { num[t]=i; used[i]=1; dfs(i,n,t+1); used[i]=0; } } } int main() { is_prim(); int n; int cas=1; while(scanf("%d",&n)!=EOF) { memset(used,0,sizeof(used)); printf("Case %d:\n",cas++); num[1]=1;//第一个数一定是1 used[1]=1; dfs(1,n,2); used[1]=0; printf("\n"); } return 0; }
相关文章推荐
- [HDU] 1016 Prime Ring Problem(DFS)
- [ACM] hdu 1016 Prime Ring Problem (DFS)
- hdu 1016 很水的dfs
- hdu 1016 Prime Ring Problem (dfs)
- HDU - 1016 Prime Ring Problem ——DFS
- HDU 1016 搜索问题 dfs
- HDU1016.....dfs和&&的短路作用
- HDU 1016 Prime Ring Problem(DFS入门)
- hdu 1016 Prime Ring Problem (dfs)
- HDU 1016 Prime Ring Problem (DFS)
- hdu 1016 Prime Ring Problem(dfs)
- HDU 1016 Prime Ring Problem(dfs)
- hdu 1016 Prime Ring Problem (DFS)
- HDU 1016 DFS
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016 Prime Ring Problem DFS
- HDU 1016 Prime Ring Problem(DFS入门)
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016 Prime Ring Problem(经典DFS )
- HDU-#1016 Prime Ring Problem(DFS+回溯)