hdu 1016 Prime Ring Problem(DFS +回溯法)
来源:互联网 发布:vb最新版 编辑:程序博客网 时间:2024/05/16 10:03
题目分析:
#include<iostream>#include<cstdio>#include<memory.h>#include<math.h>using namespace std;int a[25],vis[25],n,cnt;bool isprime(int x){for(int i=2;i<=(int)sqrt(x+0.5);i++)if(x%i==0)return false;return true;}void DFS(int cur){int i,j;if(cur==n+1&&isprime(a[1]+a[n])){//printf("Case %d:\n1",cnt);//cnt++;printf("1");for(j=2;j<=n;j++)printf(" %d",a[j]);printf("\n");}else{for(i=2;i<=n;i++){if(vis[i]==0&&isprime(i+a[cur-1]))//a[cur-1]不是a[cur] {vis[i]=1;a[cur]=i;DFS(cur+1);vis[i]=0;}}}}int main(){ int c=1;while(scanf("%d",&n)!=EOF){//if(c-1) printf("\n");//if(c) printf("Case %d:\n",c++);memset(vis,0,sizeof(vis));vis[1]=1,a[1]=1,cnt=1;if(n==1)printf("1\n");else DFS(2); printf("\n");//PE 见鬼了!!! }return 0;}/*Problem : 1016 ( Prime Ring Problem ) Judge Status : AcceptedRunId : 3644950 Language : C++ Author : zjut11018回溯法(同八皇后问题)DFS #include<stdio.h>#include<algorithm>using namespace std;int vis[41],pri[21],c[21],n;void dfs(int cur){ if(cur==n){ if(!pri[c[cur-1]+1])//注意判断首尾相加是否是素数 { for(int i=0;i<n-1;i++) printf("%d ",c[i]); printf("%d\n",c[n-1]); } //此处不可以写return;否则就回到主函数结束dfs} else { for(int j=2;j<=n;j++) { if(!vis[j]&&!pri[c[cur-1]+j])//判断此数没用过&&是素数 { vis[j]=1;//标记 c[cur]=j;//c[]用于打印 dfs(cur+1); vis[j]=0;//清楚标记 重要!! } }}}int main(){ for(int i=2;i<=40;i++) for(int j=i*2;j<=40;j+=i)pri[j]=1;//pri[]=1表示素数 int cas=0; while(scanf("%d",&n)==1){ cas++; printf("Case %d:\n",cas); memset(vis,0,sizeof(vis)); memset(c,0,sizeof(c)); c[0]=1;//注意第一个数 dfs(1); printf("\n");}}*//* 这个只能搜出一组解 深搜DFS.......#include<iostream>#include<cstdio>#include<memory.h>#include<math.h>using namespace std;int a[25],b[25],n,cnt;bool isprime(int x){for(int i=2;i<=(int)sqrt(x+0.5);i++)if(x%i==0)return 0;return 1;}void DFS(int cur){int i,j;for(i=2;i<=n;i++){if(a[i]==0 && isprime(b[cur]+i))//是i 不是a[i]{a[i]=1,b[++cur]=i;//是i 不是a[i]if(cur==n&&isprime(b[cur]+1)){//如果成功找到,输出printf("Case %d:\n1",cnt);cnt++;for(j=2;j<=n;j++)printf(" %d",b[j]);printf("\n");return;}DFS(cur); a[i]=0,cur--;//回溯}}}int main(){while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a));a[1]=1,b[1]=1,cnt=1;DFS(1);}return 0;}*/
- 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回溯)
- ACM dfs回溯法 Prime Ring Problem
- hdu 1016 Prime Ring Problem(回溯)
- hdu--1016 Prime Ring Problem(回溯法求解)
- Prime Ring Problem (HDU 1016)—— 回溯法
- Prime Ring Problem 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 1016Prime Ring Problem简单dfs
- gdbserver: linux-x86-low.c error: sys/reg.h: No such file or directory
- 职场人生(五):思考缺席九期作品演习
- 设计模式(一)工厂模式Factory(创建型)
- hdu 1253 胜利大逃亡 BFS
- object-->string-->long
- hdu 1016 Prime Ring Problem(DFS +回溯法)
- 中兴3G模块ID和端口号说明
- 13、backbone实战:webchat(二)详细设计
- hdu 1548A strange lift1(简单的BFS)
- cvInitFont cvPutText
- 多态性
- jQuery Ajax 全解析
- 总觉得csdn 写ios博客不方便啊,大家同意的顶起,希望有关方面能进行优化
- 中兴WCDMA模块 Linux拨号流程