素数环(dfsamp;amp;STL做法)HDU - 1016

   HDU - 1016  cxsys训练第一周&第二周

A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of numbers in two adjacent circles should be a prime. 

Note: the number of first circle should always be 1. 

 
Inputn (0 < n < 20). 
OutputThe output format is shown as sample below. Each row represents a series of circle numbers in the ring beginning from 1 clockwisely and anticlockwisely. The order of numbers must satisfy the above requirements. Print solutions in lexicographical order. 

You are to write a program that completes above process. 

Print a blank line after each case. 
Sample Input
6
8
Sample Output
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

    这题第一思路显然dfs,但是最近想了一下可以用next_permutation做,结果TLE了,究其原因,就是深搜的时候剪枝做的比较好,所以运行的时间一对比(样例是n=18),会发现dfs的解法程序在不停的输出数据,但是STL的却仅仅是在闪光标。

    得结论:有的题剪枝的十分优雅(比如这题,如果1 2 判断不成立,那么第二个数放2这一大支直接剪掉了),便不能用next_permutation,有的题(比如李白打酒,一道蓝桥杯水题),便可以这样做(现在一想主要原因就是蓝桥杯这个只需要结果,而不限制时间),还有啊比如让你输出全排列,你用dfs会很慢,而next_per就相对来说快一点,各有优势吧,当不需要剪枝的时候,next_per感觉还是略占优势,毕竟内部是用swap实现的而不是深搜,但是对于有大剪枝的题,还是慎用吧!因为next_per是对每一个全排列在判断是否符合条件(即搜索树上已经到叶了,相当于完全暴力完全无剪枝)

下面上next_per的代码:(TLE)

#include<iostream> 
#include<algorithm>
#include<cstring>
using namespace std;
int a[35];
int cnt;
int su[70]; 
bool isPrime[55]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1};//写到37 
void init(int n) {for(int i = 1; i<=n; i++) {a[i]=i;}
}
bool ok(int n) {int i;for(i = 1; i<n; i++) {if(!isPrime[a[i]+a[i+1]]) return 0;}if(!isPrime[a[i]+a[1]]) return 0;return 1;
}
int main()
{int n;int iCase=0;
//	prime();while(~scanf("%d",&n)) {iCase++;printf("Case %d:\n",iCase);if(n==1) {printf("1\n");}memset(a,0,sizeof(a));init(n);do{if(ok(n)) {int i;for( i = 1; i<n; i++) {printf("%d ",a[i]);}printf("%d\n",a[i]);}}while(next_permutation(a+2,a+n+1));printf("\n");}return 0 ;
}


下面是dfs的代码:(用时608ms)

#include<iostream>
#include<cstring>
using namespace std;
void dfs(int step);
bool book[25];
int a[25];
int n;
bool isPrime[38] = {0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1};  //0-37的打表 
int main()
{int cnt=1;while(scanf("%d",&n)!=EOF){memset(book,0,sizeof(book));memset(a,0,sizeof(a));a[1]=1;			//     别忘这个!! printf("Case %d:\n",cnt);cnt++; dfs(2);printf("\n"); }return 0 ;
}
void dfs(int step){if(step==n+1&&isPrime[a[step-1]+1]){for(int i=1;i<=n;i++){printf("%d",a[i]);if(i<n){printf(" ");	}else{printf("\n");}}return ;}for(int i=2;i<=n;i++){if(book[i]) continue;if(!isPrime[i+a[step-1]]) continue;book[i]=1;a[step]=i;dfs(step+1);book[i]=0;}
}



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机及接口技术试卷,微机原理及接口技术试题以及答案

38.如要选择2PSW(地址为DOH)的格式为39.执行下列指令组后&#xff0c;(A)_________标志位(OV)_________(P)_________MOV A&#xff0c;#0B4HADD A,#00HSUBB A,#51H40.执行下列指令组后&#xff0c;累加器(A)_________。它与R1中内容的关系是_________MOV R1&#xff0c;#87HMOV…

w7系统计算机e盘无法打开,Win7电脑磁盘打不开怎么办

Win7系统电脑磁盘出现异常&#xff0c;不管是C盘、D盘还是E盘都打不开&#xff0c;并且还出现“位置不可用 无法访问 E&#xff1a;\ 拒绝访问”的提示。那么Win7磁盘打不开怎么办呢?下面是学习啦小编给大家整理的一些有关Win7电脑磁盘打不开的解决方法&#xff0c;希望对大家…

距离高考出成绩,一年了、、、

去年2017.6.24日&#xff0c;下午4点&#xff0c;怀着紧张的心情&#xff0c;&#xff0c;&#xff0c;查看了自己的高考分数。 今年2017.6.24日&#xff0c;下午4点&#xff0c;不知道为什么&#xff0c;同样心里怦怦直跳。 一年了啊&#xff0c;进入大学&#xff0c;选择cs专…

计算机采购类增值税税率是多少,各个行业的税率是多少?

关于税收的种类&#xff0c;楼下税里税外 的回答非常全面。因为2018年的增值税率调整&#xff0c;我重点再说说调整后各行业的增值税税率&#xff0c;并比较下小规模和一般纳税人的税率的差别。也许对各位老板朋友有帮助。增值税的税率可以分为两类税率(4种)&#xff1a;16%&am…

新出计算机语言有哪些,2020年最新编程语言排名(十大编程语言的比较)

2020年最新几天前&#xff0c;编程语言社区TIOBE最近发布了三月份的编程语言排名.在最新的编程语言排名中&#xff0c;前5名排名没有明显变化. 但是&#xff0c;与以前的报告相比&#xff0c;最受欢迎的开发人员仍然是Java 8和Java 11.十大编程语言排名此外&#xff0c;在上个月…

关于时间复杂度(持续更新.....)

数据范围小于100W的&#xff08;1e6&#xff09;&#xff0c;nlogn是1000w左右&#xff0c;可以卡时。 数据范围小于1000的&#xff0c;勉强可以o(n^2)。 数据范围1000W左右的(1e7)&#xff0c;只能考虑o(n)或者o(logn) 数据范围大于1000W的&#xff08;1e7&#xff09;&…

设备怎样开启位置服务器,开启设备服务器

开启设备服务器 内容精选换一换购买Windows弹性云服务器后&#xff0c;通过MSTSC远程连接&#xff0c;发现没有声音。通过MSTSC远程连接的Windows弹性云服务器如何播放音频&#xff1f;本节内容适用于Windows Server 2008 R2、Windows Server 2016系统的弹性云服务器。Windows弹…

区间覆盖全部类型及部分精选习题汇总详解(贪心策略)

内容如下&#xff1a; 1&#xff09;区间完全覆盖问题 问题描述&#xff1a;给定一个长度为m的区间&#xff0c;再给出n条线段的起点和终点&#xff08;注意这里是闭区间&#xff09;&#xff0c;求最少使用多少条线段可以将整个区间完全覆盖 样例&#xff1a; 区间长度8&#…

【POJ - 1328】Radar Installation(贪心+计算几何)安装雷达辐射岛屿

题干&#xff1a;Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance, so …

【CF#757A】Gotta Catch Em' All!

题干&#xff1a;Bash wants to become a Pokemon master one day. Although he liked a lot of Pokemon, he has always been fascinated by Bulbasaur the most. Soon, things started getting serious and his fascination turned into an obsession. Since he is too young…

【HDU - 4509】湫湫系列故事——减肥记II(合并区间模板 or 离散化标记 or 线段树)

题干&#xff1a;虽然制定了减肥食谱&#xff0c;但是湫湫显然克制不住吃货的本能&#xff0c;根本没有按照食谱行动&#xff01; 于是&#xff0c;结果显而易见… 但是没有什么能难倒高智商美女湫湫的&#xff0c;她决定另寻对策——吃没关系&#xff0c;咱吃进去再运动运动消…

【HDU - 2093】 考试排名(排序+格式输出)

题干&#xff1a;C编程考试使用的实时提交系统&#xff0c;具有即时获得成绩排名的特点。它的功能是怎么实现的呢&#xff1f; 我们做好了题目的解答&#xff0c;提交之后&#xff0c;要么“AC”&#xff0c;要么错误&#xff0c;不管怎样错法&#xff0c;总是给你记上一笔&…

.net core 5 IIS Api网站部署需要注意(同.net 6)

应用程序池&#xff1a;.net clr 版本&#xff1a;无托管代码 2.安装.NET Core SDK和AspNetCoreModule托管模块 此工具要在官网直接下载即可

【HDU - 2087】 剪花布条(直接模拟 or KMP)

题干&#xff1a; 一块花布条&#xff0c;里面有些图案&#xff0c;另有一块直接可用的小饰条&#xff0c;里面也有一些图案。对于给定的花布条和小饰条&#xff0c;计算一下能从花布条中尽可能剪出几块小饰条来呢&#xff1f; Input输入中含有一些数据&#xff0c;分别是成…

webapi自宿主设置本地端口使用https协议

首先&#xff0c;你要申请证书&#xff0c;然后导入到证书里面&#xff1a; 具体步骤&#xff1a;运行–MMC命令&#xff0c;进入如下界面进行设置&#xff1a; 一直点下一步直到完成&#xff0c;然后将证书导入到个人里面 这个时候进入cmd程序运行如下命令&#xff1a; /…

第九届(2018)蓝桥杯 山东省赛解题报告(题目+分析+代码)

1标题&#xff1a;第几天 2000年的1月1日&#xff0c;是那一年的第1天。那么&#xff0c;2000年的5月4日&#xff0c;是那一年的第几天&#xff1f; 注意&#xff1a;需要提交的是一个整数&#xff0c;不要填写任何多余内容。 【答案】&#xff1a;125 2标题&#xff1a;明码 …

Windows下 Python3.7.0 运行环境的搭建 一套操作后就可以使用Python写代码啦~

1.下载Python for windows 废话不说&#xff0c;直接上网址&#xff1a;https://www.python.org/ftp/python/3.5.1/python-3.5.1.exe 2.安装Python for windows 运行安装文件之后&#xff0c;你会看到这个页面&#xff1a;不得不说Python 在 Windows平台下的安装比傻瓜式还傻瓜…

【HDU - 1326】Box of Bricks(模拟水题)

题干&#xff1a;Little Bob likes playing with his box of bricks. He puts the bricks one upon another and builds stacks of different height. Look, Ive built a wall!, he tells his older sister Alice. Nah, you should make all stacks the same height. Then you …

微信公众平台网站开发JS_SDK遇到的bug——wx.config注册提示成功,但部分接口注册失败问题

1 2022-02-23 使用微信公众平台调用扫一扫接口&#xff0c;总是注册不成功 这是进行注册后成功注册的接口提示 尝试注册了以下接口 拥有相关权限 解决办法&#xff1a;猜测失败原因为&#xff1a;子界面进行注册&#xff0c;在父界面进行注册后&#xff0c;成功

c++ 低位在前 高位在后_A股市场:如果股票涨停后第二天“高开低走”,你知道怎么操作才能利益最大化吗?...

(本文由公众号越声策略(yslc188)整理&#xff0c;仅供参考&#xff0c;不构成操作建议。如自行操作&#xff0c;注意仓位控制和风险自负。)如果你的股票涨停后第二天高开低走&#xff0c; 后市怎么操作&#xff1f;简单来讲&#xff0c;高开低走就是开盘价高于上个交易日的收盘…