POJ-2034 Anti-prime Sequences
2015-08-15 13:18
295 查看
题目:
http://poj.org/problem?id=2034题意:
给出一个数组,要求出一种排列,使得所有的连续d个数之和为合数。思路:
d最大为10,存下所有状态下的sum[1~d]深搜传递下去。简单搜索题,一开始有些剪枝的细节没注意wa了次,于是写一下报告。代码:
#define N 112345 int n,m; int flag,sum,ave,ans,res,len,ans1,ans2; int a ; bool vis ; bool mark ; void SP() { int cnt=0; memset(mark,true,sizeof(mark)); mark[0]=mark[1]=false; for(int i=2;i*i<=N;i++) if(mark[i]) for(int j=2;j*i<N;j++) mark[j*i]=false; } bool dfs(int now,int temp[]) { if(now == m-n+1) return true; int i,j,k,t[15]; for(i=n;i<=m;i++) if(!vis[i]) { t[1]=i; for(j=2;j<=len;j++) { if(temp[j-1]==0) { t[j]=0; continue; } t[j]=temp[j-1]+i; if(mark[t[j]]) break; } if(j<=len) continue; a[now]=i; vis[i]=true; if(dfs(now+1,t)) return true; vis[i]=false; } return false; } int main() { int i,j,k,kk,t,x,y,z; SP(); int temp[15]; while(scanf("%d%d%d",&n,&m,&len)!=EOF&&n) { memset(temp,0,sizeof(temp)); memset(vis,false,sizeof(vis)); if(dfs(0,temp)) { for(i=0;i<m-n;i++) printf("%d,",a[i]); printf("%d\n",a[m-n]); } else printf("No anti-prime sequence exists.\n"); } return 0; }
相关文章推荐
- iOS使用UIScrollView实现左右滑动UITableView和UICollectionView
- 初探UINavigationItem面目
- 初学Hibernate之Query扩展
- iOS纯代码制作欢迎界面——UIScrollView, UIPageControl, UIImageView,UIButton, NSTimer
- HDU 5063 Operation the Sequence
- poj 1679__The Unique MST(次小生成树,kruskal)
- UITableView点击背景
- HDU4675 GCD of Sequence(预处理阶乘逆元+推公式)
- CodeForces 570D DFS序 树状数组 Tree Requests
- UIVisualEffectView 毛玻璃效果的应用
- iOS6新特征:UICollectionView介绍
- NGUI 圆形遮罩列表(scrolview+grid+item)
- 新版本MenuDemo——使用Duilib模拟Windows本机菜单
- C# StringBuider
- STL--F - Sequence(n*m->之前的最低要求m个月)
- Software Architecture Has Ethical Consequences
- [笔记]unsigned int 转 char 数组uitoa 函数
- break和continue的区别以及标签label的使用
- Blue Jeans - POJ 3080(多串的共同子串)
- UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用