HDU–1016题 Prime Ring Problem
2012-03-21 20:10
288 查看
素数环问题,用到了深搜,很有技巧。先是在学校OJ上看到的,后来又去杭电提交了一下。HDU水过,NYOJ超时一次,WA了一次。相对而言,NYOJ上难度大点,要考虑奇偶数。具体思路写在代码中了。
我的新的个人网站地址:www.imanor.net。欢迎各位光临。
原题地址:
HDU:点击打开链接
NYOJ:点击打开链接
HDU代码
我的新的个人网站地址:www.imanor.net。欢迎各位光临。
原题地址:
HDU:点击打开链接
NYOJ:点击打开链接
HDU代码
#include<stdio.h> #include<string.h> #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"); } }NYOJ 代码
#include<stdio.h> #include<string.h> #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(1) { scanf("%d",&n); if(!n)break; memset(vis,0,sizeof(vis)); printf("Case %d:\n",k++); if(n%2==1&&n!=1){printf("No Answer\n");continue;} else { dfs(2); printf("\n"); } } }
相关文章推荐
- HDU 1016 Prime Ring Problem
- HDU-#1016 Prime Ring Problem(DFS+回溯)
- HDU 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu-1016 Prime Ring Problem(素数环) DFS解法
- [ACM] hdu 1016 Prime Ring Problem (DFS)
- HDU 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem(素数环)
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem 题解
- HDU - 1016 Prime Ring Problem(dfs,素数环)
- hdu 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem(DFS)
- HDU 1016 Prime Ring Problem(DFS)
- HDU 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem (DFS)
- HDU 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem(dfs)