nyist 488 素数环(搜索+回溯)

2014-11-24 12:01:18 · 作者: · 浏览: 0

素数环

时间限制:1000 ms | 内存限制:65535 KB 难度:2
描述

有一个整数n,把从1到n的数字无重复的排列成环,且使每相邻两个数(包括首尾)的和都为素数,称为素数环。

为了简便起见,我们规定每个素数环都从1开始。例如,下图就是6的一个素数环。

\

输入
有多组测试数据,每组输入一个n(0 输出
每组第一行输出对应的Case序号,从1开始。
如果存在满足题意叙述的素数环,从小到大输出。
否则输出No Answer。
样例输入
6
8
3
0
样例输出
Case 1:
1 4 3 2 5 6
1 6 5 2 3 4
Case 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
Case 3:
No Answer
来源
hdu改编
上传者
ACM_丁国强
这道题应该算是比较简单的题了,提交了好几次都是TLE,我就郁闷了。。。看来基础还是不扎实啊。。。最后用素数的哈希表终于AC了。。。先前是各种TLE,程序优化真的很重要啊。这就是算法的魅力所在~
#include 
      
       
#include 
       
         #define MAXN 40 int A[MAXN]; int vis[MAXN]; int n; int isprime[40]={ 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,0, };//素数的哈希表,1代表就是素数 void dfs(int cur)//搜索+回溯(回溯其实也是根据树的深度搜索来的) { int i; if(cur==n && isprime[A[0]+A[n-1]])//递归边界,对第一个和最后一个数进行测试 { for(i=0;i
         
         

这里我应该还是钻了空子,还是不太严谨,20一类的偶数都能够成素数环,大于20就不一定了,还是有待改进啊。。

本来是想用筛选发筛选出素数的,各种TLE啊。。。大哭 (感觉筛选法效率挺高的啊)

 for(i=2;i<=MAXN;i++)
       {
       	   isprime[0]=isprime[1]=1;
           if(isprime[i]==0)
            for(j=i+i;j
           
            还是应该多学习别人的优秀算法,学无止境啊。 多学习别人的经验
            奋斗,keep moving!!!!
            


<script type="text/java script">
<script type="text/java script">BAIDU_CLB_fillSlot("771048");
点击复制链接 与好友分享! 回本站首页
<script> function copyToClipBoard(){ var clipBoardContent=document.title + '\r\n' + document.location; clipBoardContent+='\r\n'; window.clipboardData.setData("Text",clipBoardContent); alert("恭喜您!复制成功"); }
分享到: 更多
<script type="text/java script" id="bdshare_js" data="type=tools&uid=12732"> <script type="text/java script" id="bdshell_js"> <script type="text/java script"> var bds_config = {'snsKey':{'tsina':'2386826374','tqq':'5e544a8fdea646c5a5f3967871346eb8'}}; document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js cdnversion=" + Math.ceil(new Date()/3600000)
您对本文章有什么意见或着疑问吗?请到 论坛讨论您的关注和建议是我们前行的参考和动力
上一篇: C++ priority_queue 优先队列
下一篇: 算法:两个有序链表的合并
相关文章
<script type="text/java script">BAIDU_CLB_fillSlot("182716");
<script type="text/java script">BAIDU_CLB_fillSlot("517916");
图文推荐
<iframe src="http://www.2cto.com/uapi.php tid=294444&catid=339&title=bnlpc3QgNDg4IMvYyv27t6Ooy9HL9yu72Mvdo6k=&forward=http://www.2cto.com/kf/201404/294444.html" width="100%" height="100%" id="comment_iframe" name="comment_iframe" frameborder="0" scrolling="no">
<script type="text/java script">BAIDU_CLB_fillSlot("771057");