Prime Ring Problem

思路:先看成一条链,往里头填数,满足任意相邻两数和为质数(这可以打表预处理出40以内的所有质数,扩展的时候枚举),填完了后检查首尾是否满足条件。字典序可以采用扩展时从小到大枚举。另外注意对于每个case多输出一个换行,行末不要有空格。

#include<bits/stdc++.h>
using namespace std;
int n,cnt,a[25];
bool p[45],vis[25];
void print()
{
for(int i=1;i<=n;++i)
printf("%d%c",a[i],i==n?'\n':' ');
}
void dfs(int step)
{
if(step==n+1)
{
if(p[a[1]+a[n]])print();
return;
}
for(int i=2;i<=n;++i)
{
if(vis[i])continue;
if(p[a[step-1]+i])
{
vis[i]=true;
a[step]=i;
dfs(step+1);
vis[i]=false;
}
}
}
int main()
{
p[2]=p[3]=p[5]=p[7]=p[11]=p[13]=p[17]=p[19]=p[23]=p[29]=p[31]=p[37]=true;
a[1]=1;vis[1]=true;
while(scanf("%d",&n)!=EOF)
{
printf("Case %d:\n",++cnt);
dfs(2);
printf("\n");
}
return 0;
}

最新文章

  1. *HDU 1028 母函数
  2. [ZT] Vim快捷键分类
  3. R统计图
  4. InnoDB与UUID
  5. Html.Action、html.ActionLink与Url.Action的区别
  6. [BZOJ1085] [SCOI2005] 骑士精神 (A*)
  7. Spring Security 入门(1-6-2)Spring Security - 内置的filter顺序、自定义filter、http元素和对应的filterChain
  8. Ubuntu系统下配置IP地址方法介绍
  9. 015模块&mdash;&mdash;起别名
  10. mysql判断表里面一个逗号分隔的字符串是否包含单个字符串、查询结果用逗号分隔
  11. linux权限相关操作
  12. Java知多少(76)语言包(java.lang)简介
  13. dhcp、tftp及pxe简介
  14. Mac Terminal
  15. iOS开发技巧 - 使用UIDatePicker来选择日期和时间
  16. MySQL--修改普通表为自增表
  17. 11g数据库查看dataguard是否同步
  18. MongoDB Sort op eration used more than the maximum 33554432 bytes of RAM. Add an index, or speci fy a smaller limit.
  19. 共享keychain数据
  20. css3鼠标经过出现转圈菜单(仿)

热门文章

  1. 第4节 Scala中的actor介绍:1、actor概念介绍;2、actor执行顺序和发送消息的方式
  2. A easy and simple way to establish Oracle ADG
  3. 「SPOJ1487」Query on a tree III
  4. Mybatis 条件判断单双引号解析问题
  5. 「NOIP2009」Hankson 的趣味题
  6. W3C网页标准
  7. mmap 与 munmap
  8. Immediate Decodability[UVA644](Trie入门)
  9. 浏览器之本地缓存存储 localStorage 和 sessionStorage的区别以及用法
  10. 三 Road