poj 2034 Anti-prime Sequences
来源:互联网 发布:虎视眈眈镜头数据 编辑:程序博客网 时间:2024/06/05 23:53
好像距离我上次在csdn上写博客已经很长时间了,总是给自己找各种借口让自己放弃,大二了,或许不久就要离开hust,还是决定要安静地学点自己喜欢的东西了。上星期本来是因为一点小破事心情不好去POJ上刷题,结果碰到了很多数论方面的题目,于是就把《数论概论》找来看了看,接着开始在POJ上做数论的题目。今天呢,我要贴出来的题目是关于素数的,是道水题,不过我还是花了一点点心思去理解。
题意:给出数列m,m+1,m+2,……,n,和d,重新找到一个数列,使得在这个数列中d个连续的数,d-1,d-2,……个连续的数字的和都是合数。
我的思路是:根据深搜的思想,一步一步确定新的数列中第1,2,3……n-m+1个数的值。如果第i+1个位置找不到值,则返回到第i步,如果找到则进入i+2步,如此循环下去,知道n-m+1个数字的值都找到。
下面上代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>#define TRUE 1#define FALSE 0#define N 1010int p[N*10]; //若i为素数,则p[i[==1int used[N],sequence[N]; //used[i]==1表示i已经在sequence中int m,n,d; //m,n,d含义分别如description所示void prime(void){ //利用筛法得出素数表 int i,j; memset(p,1,sizeof(p)); //先假设所有数都是素数 p[0]=p[1]=0; for(i=2;i*i<N*10;i++) { if(p[i]) for(j=2*i;j<N*10;j+=i) p[j]=0; }}int judge(int index,int value){ //judge()用来判断sequence的index位置的函数置为value是否合适 int sum,i,indexleft; //sum用于计算相邻的d个数的和,indexleft是最左边的数的下标 indexleft=index-d+1; if(indexleft<0) indexleft=0; sum=value; //假设sequence[index]=value; for(i=index-1;i>=indexleft;i--) { sum+=sequence[i]; //检验d个数相加是否能得到合数 if(p[sum]) return FALSE; //如果相加过程中得到了素数,则返回FALSE,说明index位置不能放value } return TRUE;}int dfs(int index){ //用递归的方法写深搜 int i; if(index==n-m+1) return TRUE; //若搜索到下标为n-m+1,则说明sequence中的n-m+1个元素已经全部找到 for(i=m;i<=n;i++) { if(!used[i]&&judge(index,i)) { sequence[index]=i; used[i]=1; //如果index位置可以放i,则将used[i]置为1,代表已用过 if(dfs(index+1)) return TRUE; used[i]=0; //如果深搜下一个位置的值,但是发现m~n都不行,则说明index位置不能放i //故将used[i]重置为0 } } return FALSE;}int main(){ int i; prime(); while(scanf("%d%d%d",&m,&n,&d)==3&&(m+n+d)) { memset(used,0,sizeof(used)); if(dfs(0)) { for(i=0;i<n-m;i++) printf("%d,",sequence[i]); printf("%d\n",sequence[n-m]); } else printf("No anti-prime sequence exists.\n"); } return 0;}
0 0
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- POJ-2034-Anti-prime Sequences
- POJ 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- POJ-2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences
- SOJ - 1002 POJ - 2034 Anti-prime Sequences
- poj 2034 Anti-prime Sequences(dfs)
- poj 2034 Anti-prime Sequences(dfs)
- poj 2034 Anti-prime Sequences(dfs)
- [水+dfs] poj 2034 Anti-prime Sequences
- <DFS> POJ 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences DFS+质数
- pku 2034 Anti-prime Sequences
- 递归和回溯 POJ 2034 Anti-prime Sequences
- POJ 2034 Anti-prime Sequences(素数预处理+DFS回溯)
- 求大神指导,这个线性表的问题
- 第一个iOS应用 —— Hello world!
- 【Android学习】Android Toast的使用
- iOS开发-Xcode5创建静态库详解(Cocoa Touch Static Library)
- 华为面试题及答案
- poj 2034 Anti-prime Sequences
- 解析c/c++深拷贝和浅拷贝
- 【java】大数类(初稿)
- 实用xcode5
- 自反ACL总结
- 代码执行覆盖率工具Emma、cobertura简单比较
- 南洋理工学院--括号匹配问题(2题号)
- JSP应用的自我理解之三:JSP+Servlet实现表单验证
- 基于安卓WebServicw天气预报demo