• hdu1016Prime Ring Problem


    406MS 12K 729 B

    用深度优先搜索。

    小技巧:

    设置一个bool数组:将40以内所有以素数为下标的元素置1

    用used数组标记深搜时元素是否访问过

    用b数组记录一个解

    输入时判断n是否为奇数或者1.

    注意:

    输出时每个解行后面没有多余的空格。

     

    源代码如下

     

    #include<stdio.h>
    #include<string.h>
    bool c[40];
    bool used[21];
    int b[21];
    int n;
    void dfs(int t)
    {
     int i,j;
     for(i=2;i<=n;i++)
     {
      if(used[i]==0&&c[b[t-1]+i]==1)
      {
       used[i]=1;b[t]=i;
       if(t!=n) dfs(t+1);
       else if(c[i+1])
       {
        for(j=1;j<=n-1;j++)
         printf("%d ",b[j]);
        printf("%d\n",i);
       }
       used[i]=0;b[t]=0;
      }
     }
    }
    int main()

    {
     int count=0;
     memset(c,0,sizeof(c));
     c[3]=c[5]=c[7]=c[11]=c[13]=c[17]=c[19]=c[23]=c[29]=c[31]=c[37]=1;
     while(scanf("%d",&n)!=EOF)
     {
      count++;
      printf("Case %d:\n",count);
      if(n%2!=1&&n!=1)
      {
       memset(used,0,sizeof(used));memset(b,0,sizeof(b));
       b[1]=1;used[1]=1;dfs(2);
      }
      printf("\n");
     }
     return 0;
    }

        

  • 相关阅读:
    调试跳转动态打印
    PHP对redis操作详解
    SSL证书没有绿锁您与此网站建立的连接并非完全安全解决办法
    63. Unique Paths II
    62. Unique Paths
    40. Combination Sum II
    60. Permutation Sequence
    59. Spiral Matrix II
    批量修改名字的脚本
    57. Insert Interval
  • 原文地址:https://www.cnblogs.com/pandy/p/1318291.html
Copyright © 2020-2023  润新知