NYOJ488-素数环

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

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

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

输入
有多组测试数据,每组输入一个n(0<n<20),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改编

DFS深搜,注意两个十分重要的剪枝!!!

AC代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int flag[50],a[50],m;
int prime[45] = {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,0
}; //剪枝1:素数的哈希表,防止再次判定素数浪费时间
/*int isprime(int n)
{
   int i;
   if(n==1)
   return 1;
   for(i=2;i*i<=n;i++)
   {
      if(n%i==0)
      return 0;
   }

   return 1;
}*/
void Found(int x,int n,int sum)
{
   int i;
   if(sum==n)
   {
      if(prime[a[0]+a[sum-1]])
      {
         printf("%d",a[0]);
         for(i=1;i<sum;i++)
         printf(" %d",a[i]);
         puts("");
         m++;
      }
      return;
   }
   for(i=1;i<=n;i++)
   {
      if(prime[i+x]==1&&flag[i]==0)
      {
         a[sum]=i;
         flag[i]=1;
         Found(i,n,sum+1);
         //puts("");
         flag[i]=0;
      }
   }

}
int main()
{
    int i,j,n,k=1;
    while(scanf("%d",&n)&&n)
    {
       memset(flag,0,sizeof(flag));
       printf("Case %d:\n",k++);
       //剪枝2:去掉奇数
       if(n%2!=0&&n!=1)//n是奇数的话必定无法形成素环! 因为:奇、偶、奇、偶……奇 头尾奇+奇=偶,不是素数。
       printf("No Answer\n");
       else
       {
           m=0;
           flag[1]=1;
           a[0]=1;
           Found(1,n,1);
       }
    }
    return 0;
}
时间: 2024-09-20 00:39:38

NYOJ488-素数环的相关文章

深搜回溯-素数环-1459-jobdu

题目1459:Prime ring problem 时间限制:2 秒内存限制:128 兆特殊判题:否提交:747解决:306 题目描述: 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. No

matlab/simulink中代数环的问题及解决措施

一.代数环的问题 在数字计算中,输入信号决定输出信号,同时输出信号也决定输入信号,由于数字计算的时序性,导致没有输出信号无法计算输入信号,没有输入信号又反过来无法计算输出信号,形成一个死锁(deadlock)或死循环,这就是代数环.如下图1所示,就是一个简单的代数环的例子. 图1.一个简单的代数环的例子 二.代数环产生的条件 简单地说,代数环其实就是一个输入信号包含输出信号,同时输出信号也包含输入信号的特殊反馈回路.在simulink中,这是由于直通模块(无延时的模块)的原因造成的,simuli

Google+1对你的搜素引擎优化的有影响吗?

文章描述:谷歌的+1按钮是如何影响搜索引擎优化. 从Google Buzz的时代以来,+1按钮对于用户和博文写作者已经成了一个神秘的事物.和Facebook的"赞"按钮不同,在Google Buzz那里,它不会直接将内容分享到用户的公开信息流中去.但是培养一个社交图早已成为Google的目标了,与搜索引擎相联系,似乎是不可避免的. Google对于+1按钮的定义是帮助让人们从那些已经知道并信任的人那里,发现并分享有关的内容.用户们可以给不同类型的内容+1,包括Google搜索的结果,网

真正的内容王者是在搜素引擎收录之后

"内容为王"几乎成了网站建设制作及优化的真理,不仅搜索引擎特别看重优质内容,浏览者也越来越喜欢原创的独一无二的有价值的内容.在交换连接的时候,一般权重尚可的网站,对收录量和快照表现也都有要求.相关网站快照表现,笔者此前专门写过<为什么说快照是网站权重的晴雨表>,认为网站快照反映的是一个趋势,一个网站权重高低变化的趋势.其实,内容也是一样,内容反映的也是一个趋势,只是现实中收录数量尚可的网站其权重变现都还可以. 在"内容为王"四个字的理解上,很多人存在误区

搜素引擎重点惩罚的几类网站及对策

8月22日,百度在其官方论坛上公布了最新的算法调整方案,指出了此次搜索引擎算法调整的方向,这个公告发布以后,引来了优化行 业的一场骚动,表示着一次新的K站高潮的到来!现在两周过去了,这个受到影响的网站的确不再少数,特别是医疗行业,影响更大, 网站权重大部分变为0或者1,我手上的一个医疗站,权重下降为1,关键词排名全部掉,很对医疗站长都碰见了这样的情况,针对这次 算法的调整我们应该怎么做呢?我们来进行一下详细的解读: 针对此次百度算法的调整,将会对以下几类站点进行严厉的打击,我们分别来进行解读和应

对《百度搜素引擎优化指南》的个人理解总结

<百度搜素引擎优化指南>(以下简称<指南>)发布有一段时间,但本人还是第一次认真拜读.对于做百度SEO,这个优化指南就如同圣经一般.虽然只是几页,字数也不多,但是意义深远.从这本优化指南来看,百度SEO其实不是什么高深的东西,只要按照百度优化指南去做,网站就会获得很好的排名和一定的流量. 作为百度对网站的审视,最关键的一点就是用户体验.什么是用户体验?就是用户认为你的网站内容有用,而且获取很方便.百度对网站的抓取和排名就是从这些出发的.而做百度SEO,也要围绕这些去做. 1.域名的

搜素引擎的信任排名和反信任排名算法

我们都知道,搜索引擎在展示搜索结果(SERPs)时,会在候选结果中加入很多排名算法,然后对候选结果进行排序,并最终展示给用户.我们在之前就网站权重算法发布过一些见解,详见<原创文章排名不如转载的原因:权重增益>和<兰州SEO再谈网站权重增益>在诸多的排名算法中,各大搜索引擎都会加入的两种算法是信任排名算法和反信任排名算法. 什么是信任排名算法? 信任排名算法(TrustRank)最早由斯坦福大学的Gyongyi, Zoltan and Garcia-Molina在2004年提出,并

搜素引擎优化站内站外优化策略说明书

根据百度近期的表现,结合笔者自身网站进行详细的分析,笔者发现百度近期对于站内优化的权重又上升了一个级别,笔者通过仔细分析竞争对手网站发现,很多竞争对手在外联收录这块有很多短板,但是其在站内优化方面做的是异常之好,笔者今天和大家分享的话题是做好站内优化要注意的一些问题. 第一,网站内容结构设计应考虑全面.首先,网站站内优化,网站结构是网站的整个框架和轮廓,结构要清晰,完整,完全符合用户的阅读心里和浏览视觉,以从左到右或者由上到下进行仔细的布局和分配.其次,网站url连接路径,URL简洁,明了,尽可

如何打造素颜清纯美妹子

  每个拍室外人像的摄影师恐怕都遇到过以下情景,光线不好,设备不完善或者模特状态欠佳,这样的片子近乎于不忍直视的废片,可毕竟也是耗费精力拍出来的,总不想浪费掉,下面学生摄影师张骁exe(微博@张骁exe)来讲讲他是如何在这种窘境下逆袭修出素颜清纯美妹子的. 以这张照片为例(首先申明,拿这张妹子的图当案例已经经过妹子允许了). 原片和修过后的对比 局部细节对比 拿到这张片子出来第一感觉就是这拍的是什么玩意,阴天,光线也不好,反光板也没带,灯也没带,连妆都没怎么化,不过该修的片子还是得修的. 我个人