这个题就是给出一个数字n,表示有n个数。编号为1~n。

然后要求我们将这n个数连起来变成一个环,要求随意两个数相加所得值必须为素数。

假设满足条件就将这个环输出来!



这个题:dfs+回溯+推断。然后注意先是将值放到一条线上,

假设头尾相加和也为素数,则能够连成环,然后就能够输出了!

代码例如以下:

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,a[22];
bool vis[22];
bool judge(int ns)
{
if(ns==1)
return false;
if(ns==2||ns==3)
return true;
for(int i=2; i<=ns/2; i++)
if(ns%i==0)
return false;
return true;
}
void dfs(int num)
{
if(num==n)
{
if(judge(a[0]+a[n-1]))
{
for(int i=0;i<n;++i)
printf("%d%c",a[i],i==n-1? '\n':' ');
return ;
}
}
else
{
for(int i=2;i<=n;i++)
{
if(judge(a[num-1]+i)&&!vis[i])
{
a[num]=i;
vis[i]=true;
dfs(num+1);
vis[i]=false;
}
}
}
}
int main()
{
int ji=1;
while(cin>>n)
{
memset(vis,false,sizeof(vis));
memset(a,0,sizeof(a));
cout<<"Case "<<ji++<<":"<<endl;
a[0]=1;//以一为起点。 vis[1]=true;
dfs(1);
cout<<endl;
}
return 0;
}

最新文章

  1. 30分钟?不需要,轻松读懂IL
  2. touch的属性
  3. Innodb中的事务隔离级别和锁的关系
  4. Java中类的加载、连接和初始化
  5. 文件的压缩与解压XZip,XUnzip
  6. oracle之replace结合substr的使用
  7. 使用hibernate优化
  8. Oracle EBS-SQL (SYS-9):职责使用菜单.sql
  9. PHP开发APP接口
  10. android 调用系统打电话和发短,懒得记
  11. java 状态模式 解说演示样例代码
  12. carry-检查数据接口返回数据合法性
  13. android sdk manager 国内镜像
  14. PAT 1008. Elevator (20)
  15. 使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API
  16. Material Design Library 23.1.0的新变化与代码实战
  17. Flutter: X Android license status unknown
  18. Spark中map与flatMap
  19. Mongodb 创建管理员帐号与普通帐号
  20. MATLAB 地图工具箱 m_map 的安装和入门技巧(转)

热门文章

  1. 稳定婚姻问题和Gale-Shapley算法(转)
  2. gdi+ 高速绘制透明窗体
  3. 对于面向对象的理解(JAVA)
  4. perl 继承概述
  5. jQuery中对 input 控件的操作
  6. Android插件化开发---执行未安装apk中的Service
  7. Effective C++_笔记_条款01_视C++为一个语言联邦
  8. 基于visual Studio2013解决面试题之0205查找路径
  9. 【Demo 0005】Android 资源
  10. mysql基础:mysql列类型--时间和日期