hdu 1016 dfs素数环
来源:互联网 发布:窗帘的尺寸怎么算法 编辑:程序博客网 时间:2024/05/21 14:56
背景:周赛e题,当时很快就有人出,我能看出来是dfs但是却不能实现,哎以为自己能力不可写出,结果低估自己了。
学习:1.打了一个素数表,比较快捷,还有素数判别方法的函数,只需要枚举到该数的平方根即可,因为大于它的平方·根之后商都小于1,不可能再整除了。
int isPrime(int x){int i;for (i = 2; i <= sqrt(x*1.0); i++)//sqrt函数操作的是double。{if (x % i == 0) return 0;}return 1;}2.调了一个多小时尽然是又忘了回溯时下标也跟着减1!!!!!!!!
3.这里在检查一个数是否已经用过的时候,我用了每次都扫描已经用过的所有数的方法。其实可以建立一个数组visit[n],先memset(visit,1,sizeof(visit));没用过一个数k,就把visit[k]=0;这样就可以避免重复检测了。
4.调试的时候出现了把函数名定义为关键字的低级错误。调试发现h,每调试一步就会自增1,这一定是逻辑错误,结果发现没有回溯下标。
我代码:
#include<stdio.h>int prime[12]={2,3,5,7,11,13,17,19,23,29,31,37};//素数表int n,str[21]={1},h;bool isprime(int a,int b);//输入a[n]和a[n-1],如果看a[n]是否满足和为素数且前面没有出现过的要求。void makes(void); void makes(void) { if(h==n)//如果已经有n个元素了,考虑它是否和第一个元素对接,若对接则输出。 { bool last=false; int zz=str[0]+str[n-1]; for(int i=0;i<12;i++) { if(zz==prime[i]) last=true; } if(last) { for(int ii=0;ii<n;ii++){if(ii) printf(" ");printf("%d",str[ii]);}printf("\n"); } } else{ for(int i=2;i<=n;++i ) { if(isprime(str[h-1],i)) { str[h]=i; h++; makes(); } } } h--; //注意注意注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! } bool isprime(int a,int b) { int z=a+b; for(int i=0;i<12;i++) { if(z==prime[i]) goto l1; } return false;l1: for(int k=0;k<h;k++) { if(str[k]==b) return false; } return true; }int main(void){int count=1;while(scanf("%d",&n)!=EOF&&n){h=1;printf("Case %d:\n",count);count++;makes();printf("\n");}return 0;}
0 0
- hdu 1016 dfs(素数环)
- hdu 1016 dfs素数环
- 【dfs】hdu 1016 素数环
- nyoj 488&&hdu 1016 素数环【dfs】
- hdu 1016 素数环 经典dfs
- HDU 1016 素数环 简单的DFS
- hdu 1016 Prime Ring problem(dfs 素数环)
- HDU 1016 素数环 深度优先搜索(DFS)
- Hdu 1016 Prime Ring Problem (素数环经典dfs)
- hdu-1016 Prime Ring Problem(素数环 dfs)
- HDU 1016 Prime Ring Problem(DFS 素数环问题)
- hdu-1016Prime Ring Problem(素数环 dfs)
- hdu-1016 Prime Ring Problem(素数环) DFS解法
- hdu 1016 Prime Ring Problem(dfs,素数环)
- HDU (dfs)1016 Prime Ring Problem素数环
- hdu 1016Prime Ring Problem dfs经典题 素数环
- dfs hdu 1016 Prime Ring Problem 素数环
- HDU 1016 Prime Ring Problem (素数环)(DFS)
- systemctl命令用法
- 分离adapter的getView方法代码,写出个清爽的adapter
- 在向Table、FeatureClass 中添加记录的时候有几种可供选用的插入方
- 堆排序
- Genymotion的使用中文手册
- hdu 1016 dfs素数环
- 云计算
- poj3436--ACM Computer Factory(最大流,拆点dinic)
- raphael生成柱状图时横坐标显示文字说明
- 怎样区分信号不存在(输入为悬空,高阻态)与输入信号与地相同的情况,以及”不存在“这个信号的存储。
- 三层总结
- Oracle后台进程
- iOS 7人机交互指南-Icon和Image设计-Icon and Image Sizes(icon和图片尺寸)
- MyEclipse的一个项目名字上显示有误的解决方案