zoukankan      html  css  js  c++  java
  • HDOJ搜索专题之Prime Ring Problem

    经典的DFS,素数环问题。

    题目大意:将从1开始的前n个自然数排成一个圈,使得任意相邻的两个数的和是素数。给定n,按字典序打印结果。

    View Code
     1 #include <stdio.h>
     2 #include <string.h>
     3 #define N 20
     4 int a[N],n,cnt;
     5 char is_p[40],vis[N];
     6 void init()
     7 {
     8   memset(is_p,0,sizeof(is_p));
     9   is_p[2]=1;
    10   is_p[3]=1;
    11   is_p[5]=1;
    12   is_p[7]=1;
    13   is_p[11]=1;
    14   is_p[13]=1;
    15   is_p[17]=1;
    16   is_p[19]=1;
    17   is_p[23]=1;
    18   is_p[29]=1;
    19   is_p[31]=1;
    20   is_p[37]=1;
    21   
    22   memset(vis,0,sizeof(vis));
    23   cnt=0;
    24   vis[1]=1;
    25   a[0]=1;
    26 }
    27 void print()
    28 {
    29   for(int i=0;i<n-1;i++)  printf("%d ",a[i]);
    30   printf("%d\n",a[n-1]);
    31 }
    32 void dfs(int cnt)
    33 {
    34   if(cnt==n)
    35   {
    36     if(is_p[1+a[cnt-1]])
    37       print();
    38     return;
    39   }
    40   for(int i=2;i<=n;i++)
    41   {
    42     if(vis[i] || !is_p[i+a[cnt-1]])  continue;
    43     vis[i]=1;
    44     a[cnt]=i;
    45     dfs(cnt+1);
    46     vis[i]=0;
    47   }
    48 }
    49 int main()
    50 {
    51   int kase=0;
    52   while(~scanf("%d",&n))
    53   {
    54     init();
    55     printf("Case %d:\n",++kase);
    56     dfs(1);
    57     printf("\n");
    58   }
    59   return 0;
    60 }
  • 相关阅读:
    合并两个ICON
    测试用例模板/测试报告模板/测试计划模板
    测试用例的评审和变更
    编写测试用例的基本方法
    禅道的使用
    测试团队对禅道的使用
    需求变动
    禅道的安装
    测试 计划
    微信注册页面密码的测试用例编写
  • 原文地址:https://www.cnblogs.com/algorithms/p/2504680.html
Copyright © 2011-2022 走看看