zoukankan      html  css  js  c++  java
  • 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;
    }

        

  • 相关阅读:
    Oracle巡检html版
    bat批处理常用脚本
    UiBot踩坑记录
    服务器的一些优化
    开始学算法(一)
    docker 容器服务脚本自启动
    Cenots Ubuntu linux系统服务脚本开机自启方法
    docker容器添加自定义hosts
    docker 常用命令
    《图解HTTP》学习笔记
  • 原文地址:https://www.cnblogs.com/pandy/p/1318291.html
Copyright © 2011-2022 走看看