zoukankan      html  css  js  c++  java
  • HDU1016 Prime Ring Problem 简单dfs

    数据比较小,可以先枚举出范围内所有的素数用来作判断。注意递归条件。

     1 #include<stdio.h>
     2 int n;
     3 int a[20],v[20];
     4 int prime[12]={2,3,5,7,11,13,17,19,23,29,31,37};
     5 int check(int a)
     6 {
     7     for(int i=0;i<12;i++)
     8         if(a==prime[i]) return 1;
     9     return 0;
    10 }
    11 int dfs(int count,int start)
    12 {
    13     if(count==n&&check(a[n-1]+1))
    14     {
    15         printf("1");
    16         for(int i=1;i<n;i++)
    17             printf(" %d",a[i]);
    18         printf("
    ");    
    19     }
    20     for(int i=2;i<=n;i++)
    21         if(!v[i]&&check(start+i))  
    22         {
    23             v[i]=1;
    24             a[count]=i;
    25             dfs(count+1,i);
    26             v[i]=0;    
    27         }  
    28 }
    29 int main()
    30 {
    31     int k=1;
    32     while(scanf("%d",&n)!=EOF)
    33     {
    34         for(int i=0;i<=n;i++)
    35             v[i]=0;
    36         printf("Case %d:
    ",k++);
    37         dfs(1,1);
    38         printf("
    ");
    39     }    
    40 }
  • 相关阅读:
    bzoj 4610 Ceiling Functi
    uva 01350
    uva 12075
    uva 01393
    uva 11038
    CF 496E
    CF 496D
    poj 3167
    hdu 4622
    spoj 7258
  • 原文地址:https://www.cnblogs.com/lqquan/p/3669930.html
Copyright © 2011-2022 走看看