zoukankan      html  css  js  c++  java
  • ny488 素数环

    素数环

    时间限制: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
    本来挺简单的一题,先是TLE然后是wa,仔细检查才发现,少了个23,他也是素数,于是乎,AC了
     1 #include<iostream>
     2 #include<string>
     3 #include<cstring>
     4 #include<cstdio>
     5 using namespace std;
     6 int vis[20]={0};
     7 int isp[40];
     8 int A[20];
     9 int n;
    10 int mm;
    11 void fuu()
    12 {
    13         int i;
    14     for(i=0;i<=20;i++)
    15         A[i]=i+1;
    16 }
    17 void fun()//打表所有素数
    18 {
    19    memset(isp,0,sizeof(isp));
    20    isp[2]=1;isp[3]=1;isp[5]=1;isp[7]=1;isp[11]=1;isp[13]=1,isp[17]=1;
    21    isp[19]=1;isp[23]=1;isp[29]=1;isp[31]=1;isp[37]=1;//一开始少写了个23
    22 }
    23 void  dfs(int cur)//从1开始算起
    24 {
    25     int i;
    26     if(cur==n && isp[A[0]+A[n-1]])//递归的边界。别忘了测试第一个数据,和最后一个数据
    27     {
    28         for(i=0;i<n;i++)//打印方案
    29            printf("%d ",A[i]);
    30            mm=1;
    31         printf("
    ");
    32      }
    33    else
    34      for(i=2;i<=n;i++)//尝试放置每个数i
    35        if(!vis[i] && isp[i+A[cur-1]])//如果i没有用过,并且和前一个数之和为素数;
    36       {
    37          A[cur]=i;
    38          vis[i]=1;//设置使用标志
    39          dfs(cur+1);
    40          vis[i]=0;//清除标志
    41       }
    42       return ;
    43 }
    44 int main()
    45 {
    46   fuu();fun();//事先存好
    47     int k=1;
    48 while(scanf("%d",&n) && n!=0)
    49     {mm=0;
    50         printf("Case %d:
    ",k++);
    51         if(n==1)
    52         printf("1
    ");
    53         else if(n%2==1)
    54          printf("No Answer
    ");
    55          else{
    56           dfs(1);
    57           if(!mm)
    58          printf("No Answer
    ");
    59          }
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    Kubelet 会做些什么
    k8s apiserver 源码阅读笔记
    robotframework环境安装
    Hper-V卸载
    Hyper-V安装虚拟机
    git下载/上传文件提示:git did not exit cleanly
    jmeter使用csv传参进行并发测试验证
    jenkins启动
    win7系统中 python2、python3安装后再安装插件时遇到的问题
    Base.py最基层的一些方法的封装--自己整理的一些小内容
  • 原文地址:https://www.cnblogs.com/lovychen/p/3219468.html
Copyright © 2011-2022 走看看