poj 2034 Anti-prime Sequences
2012-08-29 15:56
295 查看
题意要求给定一个范围,然后指定一个区间d,使(2到d)的任意区间之和为合数即可。 深搜枚举 #include<stdio.h> #include<string.h> #include<iostream> using namespace std; int use[1001],prime[10001],vis[1001]; int n,m,d,flag; bool dfs(int d,int th) { if(th==m-n+2) { flag=1; printf("%d",use[1]); for(int i=2;i<=th-1;i++) printf(",%d",use[i]); printf("\n"); return true; } for(int i=n;i<=m;i++) { if(vis[i]==0) { vis[i]=1; use=i; int sum=i; int f=1; for(int j=th-1;j>=th-d+1&&j>=1;j--) { sum=sum+use[j]; //printf("%d %d %d\n ",sum,use[j],i); if(prime[sum]==0) {f=0; break;} } if (f==1&&dfs(d,th+1)) return true; vis[i]=0; } } return false; } int main() { memset(prime,0,sizeof(prime)); for(int i=2;i<=10000;i++) { if(prime[i]==0) for(int j=2;j*i<=10000;j++) { prime[i*j]=1; } } prime[1]=0; prime[2]=1; prime[3]=0; while(scanf("%d%d%d",&n,&m,&d)) { if(n==0&&m==0&&d==0) break; flag=0; memset(vis,0,sizeof(vis)); for(int i=n;i<=m;i++) { use[1]=i; vis[i]=1; if (dfs(d,2)) break; vis[i]=0; } if(flag==0) printf("No anti-prime sequence exists.\n"); } return 0; } 相关文章推荐
- [水+dfs] poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences(dfs)
- POJ 2034 Anti-prime Sequences(数论+dfs)
- poj 2034 Anti-prime Sequences(dfs)
- POJ - 2034 Anti-prime Sequences(素数判断+搜索)
- poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences(素数预处理+DFS回溯)
- [暑假集训--数论]poj2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences (筛素数+DFS)
- poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences (筛素数+DFS)
- POJ 2034 Anti-prime Sequences
- 递归和回溯 POJ 2034 Anti-prime Sequences
- POJ_2034_Anti-prime Sequences(数论+DFS)
- poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences(dfs)
- poj 2034 Anti-prime Sequences(dfs)