素数环(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…

五年级数学8课时用计算机探索规律,小学五年级数学《用计算器探索规律》教案范文三篇...

教案包括教材简析和学生分析、教学目的、重难点、教学准备、教学过程及练习设计等。下面就是小编给大家带来的小学五年级数学《用计算器探索规律》教案范文&#xff0c;欢迎大家阅读!小学五年级数学《用计算器探索规律》教案范文一教学目标&#xff1a;1.使学生借助计算器的计算…

对记忆化搜索(ms)和动态规划(dp)的深入理解

六月中旬了&#xff0c;马上就要期末考试了&#xff0c;期末考试结束以后就要迎来紧张刺激的留校集训&#xff0c;到那时博客会更新的比较频繁&#xff0c;而现在在准备期末考试&#xff0c;所以可能更新的博客稍微少一些。话不多说&#xff0c;今天来更一篇刚刚吃饭的时候关于…

史密斯圆图的使用

史密斯圆图的使用 简介识别史密斯圆图等反射系数圆归一化阻抗圆导纳圆图史密斯圆图的使用单支匹配双支匹配简介 史密斯图Smith Chart是电气工程,无线电,射频工程,微波工程和通信等领域常用的一种图示工具,用于分析和设计传输线和阻抗匹配网络,它由美国工程师Phillip H.Sm…

html5触边反弹,第四章课件.PPT_数字电子技术基础(ppt课件)_ppt_大学课件预览_高等教育资讯网...

第 4章 触发器电路授课计划教学内容教学小结一、授课计划1、教学目标1,熟练掌握基本 RS触发器的工作原理,逻辑功能, 及钟控 RS触发器, JK触发器,D触发器的逻辑功能, 时间波形图, 特性方程 。2,理解钟控 RS触发器, JK触发器, D触发器电路的工作原理, 特点, 相互之间的转换及常用…

一发模拟水题但是RE,暑假抽个时间改一改、、

这是我们实验室纳新考试的A题&#xff0c;简单模拟。 话不多说上题干&#xff1a;哲哲晔晔很难受Description哲哲和晔晔最喜欢一起睡懒觉了&#xff01;可老师又特别喜欢点名&#xff0c;所以每个第一节有课的早晨&#xff0c;他们都会很难受。因为起床太晚了他们每次都要跑着去…

莆田学院计算机科学与技术分数,莆田学院录取分数线2021是多少分(附历年录取分数线)...

莆田学院录取分数线2020是多少分&#xff0c;各专业录取分数线是多少&#xff0c;是每个填报莆田学院的考生最关注的问题&#xff0c;随着各省高考录取批次相继公布&#xff0c;考生也开始关心是否被录取&#xff0c;本站小编整理相关信息供参考&#xff0c;仅供参考。一、莆田…

一道水的不能再水的题目

Description一个n&#xff0c;代表一共有多少个数&#xff0c;接下来给你n个数&#xff0c;让你求一个m&#xff0c;使得前m个数的和大于等于n个数总和的一半.Input一个n&#xff08;0<n<10000&#xff09;代表一共有多少个数&#xff0c;接下来n个数&#xff08;1~300&a…

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

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

快速幂模板

最近准备期末考试有点枯燥&#xff0c;&#xff0c;就更新点水题上来或者模板上来啦&#xff0c;也算是整理一下实验室电脑的文件&#xff0c;&#xff0c;太多太杂了。 模板如下&#xff1a;&#xff08;等暑假开始了&#xff0c;我再把矩阵快速幂的模板放上来&#xff09; #i…

培智计算机教学论文,【培智数学论文】_培智数学教学论文

课件架桥,点亮思维——谈多媒体在培智数学教学中的有效运用随着素质教学改革的深入,课堂教学模式也逐步从传统单一的教授式转入到创新多元化的探究式.教师,也逐步从传道者转化为引领者,学生,更是从课堂的配角转化为探究的主体.新型的教学模式,需要更先进的教学手段介入.而信息化…

快期末考试了好烦躁啊来写点东西

最近是真的烦躁&#xff0c;&#xff0c;偶然的机会加了一个四非保研群&#xff0c;无数次的感受到了这个世界对非985非211学校的歧视&#xff0c;而你对此只能无奈&#xff0c;却无能为力。里面说了很多考研的途径和一些需要注意的事情&#xff0c;比如九推啊夏令营啊等等新名…

大学计算机二级培训蹭课,本人在复旦大学蹭课总结的一点小小的经验

1、尽量早点去蹭课&#xff0c;因为会有很多复旦的学生去占座&#xff0c;特别是专业课上他们的到座率很高,所以最好群里面约好了结伴同行&#xff0c;这样的话&#xff0c;谁先到就可以给同伴占个座了;2、去的时候尽可能穿得像个学生&#xff0c;带几本相关的书&#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…

据说200G网盘资料

来源&#xff1a;HACK学习呀2015cracer入侵入门到精通视频教程点我查看trf3一笔√带过入侵教程点我查看ypan〔复仇者〕新手入门系列(7套)点我查看g1tb菜鸟入门&#xff0c;做的确实不错点我查看q0oh菜鸟基础(10套)点我查看2zq6小迪渗透第十期点我查看u5sv计算机网络点我查看v14…

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

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

51nod 1091 重叠的线段(贪心)

题干&#xff1a; X轴上有N条线段&#xff0c;每条线段包括1个起点和终点。线段的重叠是这样来算的&#xff0c;[10 20]和[12 25]的重叠部分为[12 20]。 给出N条线段的起点和终点&#xff0c;从中选出2条线段&#xff0c;这两条线段的重叠部分是最长的。输出这个最长的距离。如…

计算机编程老鸟的心得,java入门123——一个老鸟java学习心得.docx

java入门123——一个老鸟的java学习心得学习Java心得体会  学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java)&#xff0c;兴趣最重要。一直觉得自己在学计算机编程语言&#xff0c;学习了很多&#xff0c;但每门语言都停留在知识边缘地带…

HDU 3785 寻找大富翁(sort排序或优先队列)

题干&#xff1a; 浙江桐乡乌镇共有n个人,请找出该镇上的前m个大富翁. Input输入包含多组测试用例. 每个用例首先包含2个整数n&#xff08;0<n<100000&#xff09;和m(0<m<10)&#xff0c;其中: n为镇上的人数&#xff0c;m为需要找出的大富翁数, 接下来一行输入…