zoukankan      html  css  js  c++  java
  • HUAS Summer Trainning #3~C

    Description

    Download as PDF
     

    A ring is composed of n (even number) circles as shown in diagram. Put natural numbers $1, 2, dots, 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.

    Input 

    n (0 < n <= 16)

    Output 

    The 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.


    You are to write a program that completes above process.

    Sample Input 

    6
    8
    

    Sample Output 

    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
    

     解题思路:这个题目的意思是输入一个偶数将其组成一个环,使得相邻两个整数之和均为素数。输出时从整数1开始逆时针排列。同一个环应恰好输出一次。这个问题使用回溯法是很好的解题方法,还需注意的是最后一个数和第一个数之和也要为素数。并且这种没有限制条件停止的一般都要在输入数字时判断是否输入错误(!=EOF)

    程序代码:

    #include <cstdio> 
    int n,A[18],vis[18],i;
    int isp(int num)

     for(i=2;i*i<=num;i++) 
     {
      if(num%i==0)
       return 0;
     }
     return 1;

    void dfs(int cur)
    {
     if(n==cur&&isp(A[1]+A[n]))//递归边界,别忘了测试第一个数和最后一个数
     {
      for(i=1;i<n;i++)
       printf("%d ",A[i]);
      printf("%d ",A[n]);//打印方案
     }
      for(int i=2;i<=n;i++)//尝试放置每个标志i
      {
      if(!vis[i]&&isp(i+A[cur]))//如果i没有用过,;并且与前一个数之和为素数
      {
       vis[i]=1;//设置使用标志
       A[cur+1]=i;
       dfs(cur+1);
       vis[i]=0;//清楚标志
      }
      }
    }

    int main()
    {
     int t=0;
     while(scanf("%d",&n)!=EOF)
     {
      A[1]=1;
      if(t!=0)
       printf(" ");
      t++;
      printf("Case %d: ",t);
      dfs(1);
     }
     return 0;

    }

  • 相关阅读:
    网站压力测试工具----webbench
    skin.xml
    krpano和react的结合展示
    swiper的相关用法
    js的hover实现方法。
    js的slice和split和splice和substring和substr的区别
    使用JSSDK分享页面
    微信jssdk分享功能开发
    点击复制
    JS的document.all函数使用 示例
  • 原文地址:https://www.cnblogs.com/chenchunhui/p/4693061.html
Copyright © 2011-2022 走看看