【南阳 oj】488--素数环(DFS)
来源:互联网 发布:南开大学VPN网络 编辑:程序博客网 时间:2024/06/10 07:35
点击打开链接
素数环
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。
为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。
- 输入
- 有多组测试数据,每组输入一个n(0<n<20),n=0表示输入结束。
- 输出
- 每组第一行输出对应的Case序号,从1开始。
如果存在满足题意叙述的素数环,从小到大输出。
否则输出No Answer。 - 样例输入
6830
- 样例输出
Case 1:1 4 3 2 5 61 6 5 2 3 4Case 2:1 2 3 8 5 6 7 41 2 5 8 3 4 7 61 4 7 6 5 8 3 21 6 7 4 3 8 5 2Case 3:No Answer
- 来源
- hdu改编
- 上传者
- ACM_丁国强
#include<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;int n,a[25],b[25],ans;int v[25];void dfs(int k,int n){if(k==n+1&&!b[v[n]+1]){printf("1"); for(int i=2;i<=n;i++)printf(" %d",v[i]);printf("\n");return;}for(int i=2;i<=n;i++){if(!a[i]&&!b[v[k-1]+i]){a[i]=1;v[k]=i;dfs(k+1,n);a[i]=0;}}}void isPrime(){memset(b,0,sizeof(b));b[1]=1;for(int i=2;i<=6;i++)if(!b[i])for(int j=i*i;j<36;j+=i)b[j]=1;}int main(){int kase=1;isPrime();while(~scanf("%d",&n),n){v[1]=a[1]=1;printf("Case %d:\n",kase++);if(n==1) printf("1\n");else if(n%2==0) dfs(2,n);else printf("No Answer\n");}return 0;}
由于是刚学的dfs,所以不是太会,做出来后有些问题解决不了,就参考了一下别人的思路和代码。
以下是我参考的,比我写的要好的多。。
可以看看。。
http://www.cnblogs.com/dongsheng/archive/2012/08/15/2639452.html
阅读全文
0 0
- 【南阳 oj】488--素数环(DFS)
- 南阳oj 题目 488 素数环
- 南阳448 素数环(DFS)
- 素数环(南阳oj488)(DFS+剪枝)
- 南阳oj~~素数
- 素数----南阳OJ
- 南阳oj 题目169 素数
- 南阳OJ~~素数求和问题
- 南阳OJ~~素数距离问题
- 南阳oj 素数求和问题
- 南阳oj--素数距离问题
- 南阳oj 26 孪生素数
- 南阳oj 27 dfs入门
- 南阳理工OJ 迷宫寻宝(一)DFS
- 素数环(dfs)
- 素数环(dfs)
- 南阳理工OJ_题目488 素数环
- 南阳理工---题目488素数环
- 使用aop获取方法运行之后的返回值
- 解决input[type=file]打开时慢、卡顿问题
- 微信逆向之——静态分析利用微信源码解析field_lvbuff字段(blob类型)
- chrome浏览器input背景黄色
- 【URL】URL基本知识
- 【南阳 oj】488--素数环(DFS)
- arcgis for javascript 判断Toolbar是处于绘制状态
- Android数据库操作第三方库GreenDao的使用
- (二)Makefile的编写规则、make的运行规则
- 算法学习记录二(C++)--->字符串空格替换
- POJ
- 获取本地IP地址
- TypeError: argument 1 must be string or buffer, not instance
- Maven添加 net.sf.json 依赖报错:Missing artifact net.sf.json-lib:json-lib:jar:2.4