NYOJ 488 素数环
来源:互联网 发布:唐筛检查结果数据分析 编辑:程序博客网 时间:2024/06/07 02:05
题目链接
果然程序是需要自己打一遍的,虽然之前也已经提交过素数环的代码,但是不经过自己思考的代码自己还是打不出来。这也算是自己真正意义上的一次深搜代码吧,往往是思路清晰,却写不出代码。。
通过这个题目,我觉得写伪代码来理清思路也是很好用的一种方法。。
同时针对这个题目,n为奇数时是没有答案的,n为偶数时一定有符合条件的排列(我还没搞清楚为什么),当n=1时答案为1,还有一点就是深搜代码能够自动输出所有的情况。。
附代码
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#include<stack>using namespace std;int n,k;int visit[25];int dis[25];int a[25]={2,3,5,7,11,13,17,19,23,29,31,37,41};bool prim(int num){ for(int i=0;i<13;i++) { if(a[i]==num) return true; } return false;}void dfs(int i,int sum){ if(sum==n) { if(prim(dis[sum-1]+1)) { for(int j=0;j<n-1;j++) { printf("%d ",dis[j]); } printf("%d\n",dis[n-1]); }// else// {// printf("No Answer\n");// } } visit[i]=1; for(int j=2;j<=n;j++) { if(prim(dis[sum-1]+j)&&visit[j]==0) { visit[j]=1; dis[sum]=j; dfs(j,sum+1); visit[j]=0; } }}int main(){ int ncase=0; while(scanf("%d",&n)&&n) { memset(visit,0,sizeof(visit)); printf("Case %d:\n",++ncase); if(n==1) { printf("1\n"); continue; } if(n%2) { printf("No Answer\n"); continue; } dis[0]=1; dfs(1,1); }}
0 0
- nyoj 488 素数环
- nyoj 488 素数环
- NYOJ 488 素数环
- NYOJ 488 素数环
- NYOJ-488 素数环
- NYOJ 488 素数环
- 素数环(nyoj 488)
- nyoj-488-素数环
- Nyoj 488 素数环
- NYOJ 488 - 素数环
- NYOJ-488 素数环
- NYOJ 488【素数环】
- NYOJ 488 素数环
- nyoj 488 素数环
- nyoj-488-素数环
- nyoj 488 素数环
- Nyoj 素数环488
- nyoj 488 素数环
- js获取<input>的value
- Java,方法的重写和重载
- MP4文件格式解析
- CALayer绘制图层
- 新手入门,和风天气预报免费API接口用GSON工具实现数据解析
- NYOJ 488 素数环
- 使用Servlet3.0和XMLHttpRequest Level 2处理文件上传
- java 内部类
- php面向对象之接口教程
- myBatis Mapper接口注入null指针
- [leetcode]1. Two Sum
- 正则表达式
- HTML/CSS/JavaScript
- mysql安装配置