hdoj 1016 素数环
来源:互联网 发布:易语言数据库排序 编辑:程序博客网 时间:2024/06/05 06:33
DFS1
#include<iostream>using namespace std;int n, pre;int vis[23];int p[23];int cnt;int kcase;bool isPrime(int num){for(int i = 2; i*i <= num; ++i){if(num%i == 0)return false;}return true;}void dfs(int cur, int pre, int s){if(!isPrime(cur+pre)) return;if(s == n && isPrime(cur+1)){int flag = 1;for(int i = 0; i < n; ++i){if(flag){cout << p[i]; flag = 0;}else{cout <<" "<<p[i];}}cout <<endl; return ;}for(int i = 1; i <= n; ++i){if(!vis[i]){vis[i] = 1;p[s] = i;dfs(i, cur, s+1);vis[i] = 0;}}}int main(){//freopen("C:\\Users\\zhangwei\\Desktop\\in.txt","w",stdout);while(scanf("%d",&n)!=EOF){vis[1] = 1;p[0] = 1;printf("Case %d:\n",++kcase);dfs(1,0,1); printf("\n");}return 0;}
采用数组 记录 类似八皇后处理 正确性是基于 p数组 随着深度变化 不断被改变
DFS2
void dfs(int s){if(s == n && isPrime(p[s-1]+1)){int flag = 1;for(int i = 0; i < s; ++i){if(flag){cout << p[i]; flag = 0;}else{cout <<" "<<p[i];}}cout <<endl; return ;}for(int i = 2; i <= n; ++i){if(!vis[i]){if(isPrime(p[s-1]+i)){vis[i] = 1;p[s++] = i;//这里注意 必须先s++ 不可以 p[s] 后 dfs (s+1) dfs(s);vis[i] = 0;--s;}}}}第二种DFS一定注意 s++ 位置 如果采用dfs(s+1)则 当s+1 == n时候 s == n-1 此时回退到起点 s将退为0 而不是1
阅读全文
0 0
- hdoj 1016 素数环
- hdoj 1016经典问题素数环
- HDOJ 1016 素数环(DFS)
- hdoj 1016 Prime Ring Problem【素数环】
- hdoj 1016 dfs(素数环)
- HDOJ 1016 Prime Ring Problem(素数环 - 深搜)
- HDOJ-1016-Prime Ring Problem(素数环)【DFS】
- HDOJ 1016 Prime Ring Problem ( 素数环 && DFS)
- HDOJ-1016 Prime Ring Problem 素数环 DFS
- HDOJ 1016 Prime Ring Problem素数环【深搜】
- hdoj problem 1016 Prime Ring Problem(素数环&&素数问题+DFS(回溯法))
- HDOJ 1431 素数回文
- HDOJ 4548 美素数
- HDOJ-2012 素数判定
- HDOJ 2012 素数判定
- hdoj 2521 反素数
- hdoj 2521 反素数
- hdoj 4548 美素数
- 应用系统之间数据传输的几种方式
- matlab 中的del2函数
- jsonp跨域请求具体写法(原生,jquery,angular自定义服务)
- js作用域
- 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
- hdoj 1016 素数环
- 购物车动画
- LeetCode 121、122、123、188:Best Time to Buy and Sell Stock
- 总结-2017/12/7
- JAVA的循环结构①
- Monitor项目开发走过的路~透明效果的实现
- 趣图 | 你处在编程的哪个阶段?(另附肩膀放松小窍门~)
- 【Android 屏幕适配】 屏幕适配
- 函数提升面试题