hdu 1016 dfs(素数环)
2012-01-18 01:42
357 查看
题意:输入一个数n,把1到n的自然数放到一个环里,保证相邻的两个数的和是素数。
思路:素数打表+深搜。
思路:素数打表+深搜。
#include<iostream> using namespace std; int a[20],vis[20],isprime[45]={0},n; void get_prime() { int i,j; for(i=2;i<8;i++) if(!isprime[i]) for(j=i*i;j<45;j+=i) isprime[j]=1; }//把40以内的素数打出来.0代表是素数 int dfs(int step) { int i; if(step==n+1&&!isprime[a +a[1]])//深搜到结束条件 { for(i=1;i<n;i++) printf("%d ",a[i]); printf("%d\n",a ); return 0; } for(i=2;i<=n;i++) { if(!vis[i]&&!isprime[i+a[step-1]])//如果这个数没用过,并且这个数和上一个放到环里的数之和是素数 { a[step]=i; vis[i]=1; dfs(step+1); vis[i]=0;//回溯 } } } int main() { int k=1; a[1]=1; get_prime(); while(scanf("%d",&n)!=EOF) { memset(vis,0,sizeof(vis)); printf("Case %d:\n",k++); dfs(2); printf("\n"); } }
相关文章推荐
- 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 素数环问题)
- HDU 1016 素数环(DFS)
- nyoj 488&&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 dfs+回溯
- hdu 1016 Prime Ring Problem (素数环)
- 深搜_素数环(HDU_1016)
- 【dfs】hdu 1016 素数环
- [ACM] hdu 1016 Prime Ring Problem (DFS)
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016 Prime Ring Problem DFS