• HDU 1016 Prime Ring Problem


    在刚刚写完代码的时候才发现我以前交过这道题,可是没有过。

    后来因为不理解代码,于是也就不了了之了。

    可说呢,那时的我哪知道什么DFS深搜的东西啊,而且对递归的理解也很肤浅。

    这道题应该算HDU 2610 Sequence one的简化版,判重也非常简单。

    其他也没有什么好说的了,直接上代码吧。

     1 //#define LOCAL
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <cmath>
     6 using namespace std;
     7 
     8 int prime[41] = {0,1,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0};
     9 bool visited[21];
    10 int n, a[21];
    11 
    12 void DFS(int dep)
    13 {
    14     if(dep==n && prime[a[dep-1] + a[0]])
    15     {
    16         for(int i = 0; i < dep-1; ++i)
    17             printf("%d ", a[i]);
    18         printf("%d
    ", a[dep-1]);
    19         return;
    20     }
    21     for(int i = 2; i <= n; ++i)
    22     {
    23         if(!visited[i] && prime[a[dep-1] + i])
    24         {
    25             visited[i] = true;
    26             a[dep] = i;
    27             DFS(dep + 1);
    28             visited[i] = false;
    29         }
    30     }
    31 }
    32 
    33 int main(void)
    34 {
    35     #ifdef LOCAL
    36         freopen("1016in.txt", "r", stdin);
    37     #endif
    38 
    39     int kase = 0;
    40     while(scanf("%d", &n) == 1)
    41     {
    42         printf("Case %d:
    ", ++kase);
    43         a[0] = 1;
    44         memset(visited, false, sizeof(visited));
    45         DFS(1);
    46         puts("");
    47     }
    48     return 0;
    49 }
    代码君
  • 相关阅读:
    ZMQ面面观
    windows10系统右键新建菜单的自定义
    元组,列表,字典前加*
    HTTP状态码(转)
    字符串利用%02d将月份前加0
    python中while与else的联姻
    sys.argv
    pandas的read_csv踩到的坑
    wireshark抓包总结
    bcolz
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/3918527.html
Copyright © 2020-2023  润新知