素数环:

输入整数1,2,3,4,5,···,n组成一个环,使得相邻两个整数之和均为素数。

输出时从整数1开始逆时针排列。同一个环应恰好输出一次。n<=16.

Sample:

input:

6

output:

1 4 3 2 5 6

1 6 5 2 3 4

使用DFS搜索解释:素数环的第一个数为1,则选定第一个数为1,然后向下遍历所有数据,能够和前面一个数据组合相加成为素数的数就被数组记录下来。

知道判断到最后一个数字,然后检查它和第一个数相加是否为素数,若是就输出数组中记录的答案,不是就从头开始。

代码如下:

 #include<iostream>
#include<cstring>
using namespace std;
const int N=;
int vis[N],ans[N];
int n;
bool flag;
bool is_prime(int x)//判断两个数据相加是否为素数
{
for(int i=;i*i<=x;i++)
if(x%i==)return false;
return true;
}
void dfs(int cur)
{
if(cur==n+)
{
if(is_prime(ans[n]+ans[]))
{
for(int i=;i<=n;i++)
{
if(i>)cout<<" ";
cout<<ans[i];
}
cout<<endl;
}
return;
}
for(int i=;i<=n;i++)
{
if(!vis[i]&&is_prime(ans[cur-]+i))
{
vis[i]=;
ans[cur]=i;
dfs(cur+);
vis[i]=;
}
}
return;
}
int main()
{
while(cin>>n)
{
flag=false;
memset(vis,,sizeof(vis));
ans[]=;
dfs();//第一个数已经固定为1,就从2开始搜索
}
return ;
}

最新文章

  1. 基于HTML5 Canvas 实现矢量工控风机叶轮旋转
  2. Swift学习笔记-ARC
  3. HttpWebRequest 请求数据
  4. AutoLayout那些坑
  5. 杭电1241 Oil Deposits
  6. 通过注解(annotation)配置Bean
  7. ADF_ADF Faces系列6_ADF数据可视化组件简介之建立Thematic Map Component
  8. Win8系统 Python安装 - 入门
  9. 关于真机调试DDMS中的data文件夹打不开的解决方法
  10. PHP 使用用户自定义的比较函数对数组中的值进行排序
  11. 前端到后台ThinkPHP开发整站(5)
  12. SNS团队Beta阶段第七次站立会议(2017.5.28)
  13. JAVA_SE基础——编码规范&代码编写规则
  14. Programming In Scala笔记-第五章、Scala中的变量类型和操作
  15. 根据http协议下载文件保存到相应的文件下
  16. Java-HashMap、HashSet、hashTable
  17. Linq中的Select与Select many
  18. Redis托管Session
  19. Linux netstat常用命令
  20. EditPlus配置

热门文章

  1. 换抵挡装置 (Kickdown,ACM/ICPC NEERC 2006,UVa1588
  2. 在使用Pipeline串联多个stage时model和非model的区别
  3. Java面试知多少
  4. 小程序之web-view打开外部链接
  5. Lecture Sleep(尺取+前缀和)
  6. Train Problem(栈的应用)
  7. 求gcd(最大公因数),lcm(最小公倍数)模板
  8. 制作QQ微信支付宝三合一收款码
  9. Java 8中 基本数据类型
  10. CURL &amp; Fetch