HHUOJ 1400 素数圆环
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 素数圆环相关推荐
- 【寒假训练/Java】搜索专题
文章目录 题目链接 知识点 题目列表 快输 A - Knight Moves(BFS/双向BFS) B - 迷宫(一) C - 迷宫(二)(BFS) D - 老子的全排列呢 E - [NOIP2002 ...
- 素数和_只愿与一人十指紧扣_新浪博客
题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第 ...
- 素数 乘法表 闰年
1. 打印100~200 之间的素数 #include<stdio.h> #include<stdlib.h>int main() {int count = 0;for(int ...
- 质数环问题c语言,素数环问题
问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. n=20时,下面的序列就是一个素数环: 1 2 3 4 7 6 5 8 9 10 13 ...
- java判断素数1037_ACM离线题库超级全
[实例简介] 超级多的题库有离线的适合没网时做,ACMer必备,有杭电OJ,北大OJ [实例截图] [核心代码] 804f1873-5659-4f1d-bc49-31fa9b551299 └── 题库 ...
- LEETCODE-刷题个人笔记 Python(1-400)
按tag分类,250/400的重点题目 LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本 1.Two Sum(easy) 给定一个整型数组,找出能相加起来等于一个特定目标数字 ...
- 素数环问题 DFS
素数环问题 将从1到n这n个整数围成一个圆环, 若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现要求输入一个n,求n个数围成一圈有多少种素数环, 规定第一个数字是1.写出相应的 ...
- java编程实现素数环_素数环问题(Java)
问题描述:将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 分析:用回溯算法,考察所有可能的排列.然后通过剪枝(题目中的条件)筛选出可能的排列将其 ...
- 素数环问题(回溯法)
素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环. 现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个 ...
最新文章
- 集合之TreeMap源码分析,简单介绍什么是红黑树,SortedMap和NavigableMap之间的关系和区别
- python图例位置_Python | 图例位置
- 新功能:在负载均衡SLB控制台上查看DDoS安全防护阈值
- ireport 无法打开问题
- 一定质量的封闭气体被压缩后_单螺杆压缩机
- 苹果隐私部门负责人:在iPhone上侧载应用会减少用户选择
- 计算机常用维护知识,电脑怎么维护?电脑日常维护小常识
- Git:解决Git向码云中push文件报错:! [rejected] master -> master (fetch first)
- 树线段hdu 4508 美素数(线段树)
- 20200516每日一句
- robocopy 备份_Windows 7系统强大的复制命令robocopy的操作方法介绍
- 后渗透篇:清理windows入侵痕迹总结【详细】
- 面试字节跳动计算机视觉算法实习岗位
- 改进的cholesky matlab,矩阵的Cholesky分解的Matlab实现
- 在计算机操作中粘贴的快捷键是什么,电脑复制粘贴的快捷键是什么
- Unity简易小地图制作
- 【知识点】eval() 的用法
- 关于网页显示夏令时时区问题
- 服务器空文件夹无法删除怎么办,空的文件夹无法删除怎么办 空的文件夹无法删除的原因【图文】...
- JAVA线上问题排查及常用命令
热门文章
- swift编码出现Call can throw, but it is not marked with 'try' and the error is not handled错误的解决
- 用于光学神经网络的高速光学卷积加速器
- activiti学习之多个候选人
- Dubbo Invoker
- definer mysql_mysql存储过程的definer和invoker
- 关闭集群时出现no resourcemanager to stop、no nodemanager to stop、no namenode to stop、no datanode to stop
- 【trex】TRex多实例
- 当当云阅读无法登录,绑定设备超过20个的解决办法
- CSS中精灵图的使用
- Java毕设项目二手车车况在线评估计算机(附源码+系统+数据库+LW)