• HDU 1016(素数环 深搜)


    题意是说对一个长度为 n 的数环进行排列,使得相邻两数的和为素数,按从小到大的顺序依次输出。

    因为是环,所以总能调整成以 1 为序列首输出。用深度优先搜索的方法即可。在判断素数时由于 n 小于 20,所以两数的和小于 40,则只要手写小于 40 的素数数组即可。

    代码如下:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int n,a[25];
     4 bool vis[25];
     5 int prime[12] = {2,3,5,7,11,13,17,19,23,29,31,37};
     6 bool isprime(int m)
     7 {
     8     bool f = 0;
     9     for(int i = 0; i < 12; i++)
    10         if(m == prime[i])
    11         {
    12             f = 1;
    13             break;
    14         }
    15     return f;
    16 }
    17 void dfs(int step)
    18 {
    19     if(step == n+1 && isprime(a[n]+a[1]))
    20     {
    21         for(int i = 1; i < n; i++)
    22             printf("%d ",a[i]);
    23         printf("%d
    ",a[n]);
    24         return ;
    25     }
    26     for(int i = 2; i <= n; i++)
    27     {
    28         if(vis[i]) continue;
    29         if(isprime(i+a[step-1]))
    30         {
    31             vis[i] = 1;
    32             a[step] = i;
    33             dfs(step+1);
    34             vis[i] = 0;
    35         }
    36     }
    37 }
    38 int main()
    39 {
    40     int num(1);
    41     a[1] = 1;
    42     while(~scanf("%d",&n))
    43     {
    44         printf("Case %d:
    ",num++);
    45         dfs(2);
    46         printf("
    ");
    47     }
    48     return 0;
    49 }
    View Code
    日后若能有更好的想法,再来完善。 希望看到的大神不吝赐教 orz
  • 相关阅读:
    vue项目中兼容ie8以上浏览器的配置
    vue项目中event bus的简单使用
    js中的正则表达式小结1
    sourceTree跳过注册
    日期时间格式化
    阿里矢量图标库的使用
    mySql 常用命令
    php 常用的系统函数
    php mySql常用的函数
    php 关于php创建 json文件 和 对文件增删改查 示例
  • 原文地址:https://www.cnblogs.com/Taskr212/p/9526295.html
Copyright © 2020-2023  润新知