Prime Ring Problem HDU - 1016
来源:互联网 发布:《南风知我意》 编辑:程序博客网 时间:2024/06/01 15:51
Note: the number of first circle should always be 1.
You are to write a program that completes above process.
Print a blank line after each case.
68
Sample Output
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 2题目大意:就是给定几个数,然后必须以1开头,相邻两个数之和必须是素数。
思路;因为最大只有20个数,所以可以用回溯法,注意下递归的边界就可以了,另外判断是不是素数,因为这里的数比较下,可以自己写个函数判断,但是因为之前刚学了筛数法,所以我尝试直接打表素数。
下面是ac代码
#include<cstdio>
#include<string.h>
int vis[20],n,ss[50],a[25];
void sushudabiao()
{
ss[1]=0;
for(int i=2;i<=40;i++)
{
if(!ss[i])
{
for(int j=i*2;j<=40;j+=i)
{
ss[j]=1;
}
}
}
}
void dfs(int x)
{
if(x>n)
{
if(!ss[a[x-1]+1])
{
for(int j=1;j<=n;j++)
{
printf("%d%c",a[j],j==n?'\n':' ');
}
}
return;
}
for(int i=2;i<=n;i++)
{
a[x]=i;
if(!ss[a[x]+a[x-1]]&&!vis[i])
{
vis[i]=1;
dfs(x+1);
vis[i]=0;
}
}
}
int main()
{
int t=1;
sushudabiao();
while(~scanf("%d",&n))
{
printf("Case %d:\n",t++);
a[1]=1;
memset(vis,0,sizeof(vis));
dfs(2);
printf("\n");
}
return 0;
}
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU-1016 prime ring problem
- hdu 1016Prime Ring Problem
- hdu 1016 Prime Ring Problem
- HDU-1016 Prime Ring Problem
- HDU-1016-Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- Hdu 1016 Prime Ring Problem
- hdu 1016 Prime Ring Problem
- Hdu 1016 - Prime Ring Problem
- HDU 1016 Prime Ring Problem
- AccessibilityService讲解
- 一流大学、一流学科
- Effective Java学习笔记一(静态工厂方法、JavaBeans模式、builder模式)
- 80端口被占用了怎么办
- JAVA面向对象知识点详解
- Prime Ring Problem HDU - 1016
- 深入理解HTTP协议、HTTP协议原理分析
- js关闭当前页面刷新父页面
- 窗口不同初始化以及单次实例化的方案
- Handler机制的原理分析
- oracle 9i/10g/11g 各版本和patch下载列表
- 方形图片,高度铺满,宽度居中裁剪
- 设计师应该关注的科技发展方向(四)
- SQL Server 密码过期