zoukankan      html  css  js  c++  java
  • hdu 1016 回溯法(深度优先搜索)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016
    代码示例:
     1 #include "stdio.h"
     2 #include "string.h"
     3 
     4 #define N 100
     5 int n,a[100],t;
     6 int mark[25],ans[25];
     7 
     8 void prime();
     9 void DFS(int k);
    10 int prime_t(int k);
    11 
    12 int main()
    13 {
    14     int p=1;
    15     prime();
    16     while(scanf("%d",&n)!=-1)
    17     {
    18         printf("Case %d:
    ",p++);
    19         memset(mark,0,sizeof(mark));
    20         t=2;
    21         mark[1]=1;
    22         DFS(1);
    23         printf("
    ");
    24     }
    25     return 0;
    26 }
    27 
    28 void DFS(int k)   //回溯法(深度优先搜索)
    29 {
    30     int i,j;
    31     if(t==n+1 && prime_t(k+1)==1)
    32     {
    33         printf("1");
    34         for(i=2;i<=n;i++)
    35             printf(" %d",ans[i]);
    36         printf("
    ");
    37     }
    38     for(j=1;j<=n;j++)
    39     {
    40         if(mark[j]==0 && prime_t(k+j)==1 && j!=k)
    41         {
    42             mark[j]=1;
    43             ans[t++]=j;
    44             DFS(j);
    45             t--;
    46             mark[j]=0;
    47         }
    48     }
    49 }
    50 
    51 void prime()   //打印素数
    52 {
    53     int i,j,k=0;
    54     int b[100];
    55     memset(b,0,sizeof(b));
    56     for(i=2;i<100;i++)
    57     {
    58         if(b[i]==0)
    59         {
    60             a[k++]=i;
    61             for(j=i;j<100;j+=i)
    62                 b[j]=1;
    63         }
    64     }
    65 }
    66 
    67 int prime_t(int k)   //判定素数
    68 {
    69     int i;
    70     for(i=0;i<20;i++)
    71         if(k==a[i])
    72             return 1;
    73     return 0;
    74 }
    
    
  • 相关阅读:
    多线程编程核心技术(五)死锁
    SELinux详细配置
    Linux实现RAID
    iSCSi的基本配置
    文本超出省略号之前后省略号实现
    对象冻结
    条件判断的优美写法
    使用VConsole
    重绘和重排(回流)
    移动端rem布局
  • 原文地址:https://www.cnblogs.com/ruo-yu/p/4412098.html
Copyright © 2011-2022 走看看