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