zoukankan      html  css  js  c++  java
  • Prime Ring Problem HDU

    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. 

    Note: the number of first circle should always be 1. 

     

    Inputn (0 < n < 20). 
    OutputThe 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. Print solutions in lexicographical order. 

    You are to write a program that completes above process. 

    Print a blank line after each case. 
    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

    思路:DFS遍历所有结果
    AC Code:
    #include<iostream>
    #include<cstring>
    using namespace std;
    int num[100];
    int vis[100];
    int n;
    bool isPrime (int k) {
        for (int i = 2; i * i <= k; i++)
            if (k % i == 0)
                return false;
        return true;
    }
    void dfs (int k) {
        if (k > n) {
            if (isPrime (num[1] + num[n])) {
                for (int i = 1; i < n; i++)
                    printf("%d ", num[i]);
                printf("%d
    ", num[n]);
            }
            return ;
        }
        for (int i = 2; i <= n; i++) {
            if (vis[i] == false) {
                if (isPrime (num[k - 1] + i)) {
                    num[k] = i;
                    vis[i] = true;
                    dfs (k + 1);
                    vis[i] = false;
                }
            }
        }
        return ;
    }
    int main() {
        int sum = 1;
        while(~scanf ("%d", &n)){
            printf ("Case %d:
    ", sum++);
            memset (vis, false, sizeof(vis));
            num[1] = 1;
            vis[1] = true;
            dfs(2);
            putchar('
    ');
        }
    }
      人生不如意的时候,是上帝给的长假,这个时候应该好好享受假期。
      突然有一天假期结束,时来运转,人生才是真正开始了。
  • 相关阅读:
    What is a Complex Element
    XSD(Schema)教程 [转]
    XML对WEB开发的意义
    System.Xml名称空间下的支持DOM的类型
    C#:XML操作类
    xsl:valueof select="." 什么意思?
    文档对象模型
    XSLT转换XML
    DTCMS添加栏目教程
    win8 Windows Media Player 启动后CPU占用率高(60%左右)的解决办法
  • 原文地址:https://www.cnblogs.com/astonc/p/9900721.html
Copyright © 2011-2022 走看看