• NYOJ-----素数环


    素数环

    时间限制: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.....
    coder:
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdlib.h>
     4 int save[21],ans[21],step,n;
     5 void dfs()
     6 {
     7     int i,k;
     8     if(step==n)
     9     {
    10         if(ans[step-1]%2==0&&ans[step-1]!=8&&ans[step-1]!=14)
    11         {
    12             printf("1");
    13             for( k=1;k<n;k++)
    14             {
    15                 printf(" %d",ans[k]);
    16             }
    17             /*puts("");*/
    18             putchar(10);
    19         }
    20         return ;
    21     }
    22     for(i=1;i<n;i++)
    23     {
    24     if(save[i]!=0)
    25     {
    26       int temp=ans[step-1]+save[i];
    27       if(temp==2||temp==3||temp==5||(temp%2!=0&&temp%3!=0&&temp%5!=0))
    28       {
    29        int tem=save[i];
    30         ans[step++]=tem;
    31         save[i]=0;
    32         dfs();
    33         ans[--step]=0;
    34         save[i]=tem;
    35       }
    36     }
    37     }
    38 }
    39 
    40 int main()
    41 {
    42    int Case=1,i;
    43    for( i=0;i<20;i++)
    44     {
    45         save[i]=i+1;
    46     }
    47    ans[0]=1;
    48   while(scanf("%d",&n),n)
    49   {
    50 
    51     step=1;
    52     printf("Case %d:
    ",Case++);
    53     if(n==1)
    54     {
    55         printf("1
    ");
    56         continue;
    57     }
    58     if(n&1)
    59         printf("No Answer
    ");
    60     else
    61      dfs();
    62   }
    63   return 0;
    64 }
    View Code
  • 相关阅读:
    exercise 1-6
    第五章 Inheritance继承
    wk1&2 字符串
    <转>Python 多线程的单cpu与cpu上的多线程的区别
    Python字典增删操作技巧简述
    Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    <转>Python3.x和Python2.x的区别介绍
    <转>Python运行的17个时新手常见错误小结
    常见测试流程
    <转>数据库设计的三大范式
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3366171.html
Copyright © 2020-2023  润新知