HHUOJ 1400 素数圆环

题目链接

题目描述

如图所示为一个由n个圆圈构成的圆环。将自然数1,2,…,n放入圆圈内,并且要求任意两个相邻的圆圈内的数字之和为素数。请问给你圆圈数,你能给出放置自然数的所有正确方案吗?
注意:圆圈中的数字一定是从1开始的,并且连续不重复。

输入

输入包含多组测试数据。每组输入占一行,为整数n(0<n<20),表示圆圈数。

输出

对于每组输入,输出所有正确的方案,按字典序从小到大排序。每组输出后输出一个空行。具体输出格式见输出样例。
注意:只能按照顺时针方向放置数字。

样例输入

6
8

样例输出

Case 1:
1 4 3 2 5 6
1 6 5 2 3 4Case 2:
1 2 3 8 5 6 7 4
1 2 5 8 3 4 7 6
1 4 7 6 5 8 3 2
1 6 7 4 3 8 5 2

一开始用全排列发现 T 了,那就先把素数找出来再直接 DFS,注意要特判掉 n = 1 n=1 n=1 的情况,细节处理很多,详见代码,AC代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,a[25],p[40],vis[40]={0};
void dfs(int num){if(num==n&&vis[a[0]+a[num-1]]&&n>1){printf("%d",a[0]);for(int i=1;i<n;i++) printf(" %d",a[i]);printf("\n");return;}for(int i=2;i<=n;i++){if(!p[i]&&vis[i+a[num-1]]){p[i]=1;a[num++]=i;dfs(num);p[i]=0;num--;}}
}int main(){vis[2]=vis[3]=vis[5]=vis[7]=vis[11]=vis[13]=vis[17]=vis[19]=vis[23]=vis[29]=vis[31]=vis[37]=1;int id=1;while(~scanf("%d",&n)){memset(p,0,sizeof(p));printf("Case %d:\n",id++);a[0]=1;dfs(1);printf("\n");}
}

HHUOJ 1400 素数圆环相关推荐

  1. 【寒假训练/Java】搜索专题

    文章目录 题目链接 知识点 题目列表 快输 A - Knight Moves(BFS/双向BFS) B - 迷宫(一) C - 迷宫(二)(BFS) D - 老子的全排列呢 E - [NOIP2002 ...

  2. 素数和_只愿与一人十指紧扣_新浪博客

    题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第 ...

  3. 素数 乘法表 闰年

    1. 打印100~200 之间的素数 #include<stdio.h> #include<stdlib.h>int main() {int count = 0;for(int ...

  4. 质数环问题c语言,素数环问题

    问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. n=20时,下面的序列就是一个素数环: 1 2 3 4 7 6 5 8 9 10 13 ...

  5. java判断素数1037_ACM离线题库超级全

    [实例简介] 超级多的题库有离线的适合没网时做,ACMer必备,有杭电OJ,北大OJ [实例截图] [核心代码] 804f1873-5659-4f1d-bc49-31fa9b551299 └── 题库 ...

  6. LEETCODE-刷题个人笔记 Python(1-400)

    按tag分类,250/400的重点题目 LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本 1.Two Sum(easy) 给定一个整型数组,找出能相加起来等于一个特定目标数字 ...

  7. 素数环问题 DFS

    素数环问题 将从1到n这n个整数围成一个圆环, 若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现要求输入一个n,求n个数围成一圈有多少种素数环, 规定第一个数字是1.写出相应的 ...

  8. java编程实现素数环_素数环问题(Java)

    问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 分析:用回溯算法,考察所有可能的排列.然后通过剪枝(题目中的条件)筛选出可能的排列将其 ...

  9. 素数环问题(回溯法)

    素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个 ...

最新文章

  1. 集合之TreeMap源码分析,简单介绍什么是红黑树,SortedMap和NavigableMap之间的关系和区别
  2. python图例位置_Python | 图例位置
  3. 新功能:在负载均衡SLB控制台上查看DDoS安全防护阈值
  4. ireport 无法打开问题
  5. 一定质量的封闭气体被压缩后_单螺杆压缩机
  6. 苹果隐私部门负责人:在iPhone上侧载应用会减少用户选择
  7. 计算机常用维护知识,电脑怎么维护?电脑日常维护小常识
  8. Git:解决Git向码云中push文件报错:! [rejected] master -> master (fetch first)
  9. 树线段hdu 4508 美素数(线段树)
  10. 20200516每日一句
  11. robocopy 备份_Windows 7系统强大的复制命令robocopy的操作方法介绍
  12. 后渗透篇:清理windows入侵痕迹总结【详细】
  13. 面试字节跳动计算机视觉算法实习岗位
  14. 改进的cholesky matlab,矩阵的Cholesky分解的Matlab实现
  15. 在计算机操作中粘贴的快捷键是什么,电脑复制粘贴的快捷键是什么
  16. Unity简易小地图制作
  17. 【知识点】eval() 的用法
  18. 关于网页显示夏令时时区问题
  19. 服务器空文件夹无法删除怎么办,空的文件夹无法删除怎么办 空的文件夹无法删除的原因【图文】...
  20. JAVA线上问题排查及常用命令

热门文章

  1. swift编码出现Call can throw, but it is not marked with 'try' and the error is not handled错误的解决
  2. 用于光学神经网络的高速光学卷积加速器
  3. activiti学习之多个候选人
  4. Dubbo Invoker
  5. definer mysql_mysql存储过程的definer和invoker
  6. 关闭集群时出现no resourcemanager to stop、no nodemanager to stop、no namenode to stop、no datanode to stop
  7. 【trex】TRex多实例
  8. 当当云阅读无法登录,绑定设备超过20个的解决办法
  9. CSS中精灵图的使用
  10. Java毕设项目二手车车况在线评估计算机(附源码+系统+数据库+LW)