HDU1016 Prime Ring Problem
2015-02-07 22:08
316 查看
一直以为写过素数环的问题,不过今天补上,应该也不算太晚吧。
从当初的完全弄不懂DFS递归,到现在总算有了一定的概念,但也不敢说什么很溜。
前几天跑去看第一次学写素数环的时候看的博客,博主写了很多注释,几乎每句都有的那种,很详细,突然觉得自己当时好傻,很多简单的道理都不懂。
不过就算时间再倒回去,自己应该还是会坚持自己的做法吧。
感觉对那种 Print a blank line after each case.的题面有时候还是会很模糊,不清楚最后一组到底要不要再给一个空行。
按说感觉有case的话应该最后一行就不要空行了,但是这题就是个例外。
谁能懂当时的想法呢。
从当初的完全弄不懂DFS递归,到现在总算有了一定的概念,但也不敢说什么很溜。
前几天跑去看第一次学写素数环的时候看的博客,博主写了很多注释,几乎每句都有的那种,很详细,突然觉得自己当时好傻,很多简单的道理都不懂。
不过就算时间再倒回去,自己应该还是会坚持自己的做法吧。
感觉对那种 Print a blank line after each case.的题面有时候还是会很模糊,不清楚最后一组到底要不要再给一个空行。
按说感觉有case的话应该最后一行就不要空行了,但是这题就是个例外。
谁能懂当时的想法呢。
#include <iostream> #include <stdio.h> #include <string> #include <cstring> #include <cmath> #define N 50 using namespace std; int vis ; int a ; int n; int fun(int x) { for(int i=2;i<x;i++) if(x%i==0) return 0; return 1; } void dfs(int cur) { if(cur==n+1) { if(fun(a[1]+a )) { for(int i=1;i<=n;i++) printf("%d%c",a[i],i==n?'\n':' '); } return; } for(int i=1;i<=n;i++) if(vis[i]==0 && fun(i+a[cur-1])) { vis[i]=1; a[cur]=i; dfs(cur+1); vis[i]=0; } } int main() { int ca=1; while(~scanf("%d",&n)) { printf("Case %d:\n",ca++); memset(vis,0,sizeof vis); a[1]=1; vis[1]=1; dfs(2); cout<<endl; } return 0; }
相关文章推荐
- hdu 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem DFS
- HDU 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem DFS
- HDU 1016 Prime Ring Problem(DFS入门)
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem 搜索
- hdu-1016 Prime Ring Problem(素数环) DFS解法
- HDU 1016 Prime Ring Problem (DFS)
- HDU 1016 Prime Ring Problem【深搜练习】
- HDU 1016 Prime Ring Problem(素数环)
- HDU 1016 Prime Ring Problem 题解
- HDU 1016-Prime Ring Problem(DFS)
- hdu 1016 Prime Ring Problem
- [HDU] 1016 Prime Ring Problem
- [HDU] 1016 Prime Ring Problem(DFS)
- hdu 1016 Prime Ring Problem
- 搜索专题(DFS)HDU 1016-Prime Ring Problem
- HDU 1016 Prime Ring Problem
- HDU-1016-Prime Ring Problem