zoukankan      html  css  js  c++  java
  • bzoj1081: [SCOI2005]超级格雷码(dfs)

    1081: [SCOI2005]超级格雷码

    题目:传送门 


    题解:

       又是一道水题...

       因为之前做过所以知道规律:

       如n=2 B=3:

       00 10 20    21 11 01    02 12 22

       不难看出,偶数结尾的从前面从小到大,奇数的话就是大到小

        


    代码:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<cstdlib>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 int n,B;
     8 int a[1100];
     9 void dfs(int k,int T)
    10 {
    11     if(k==n+1)
    12     {
    13         for(int i=n;i>=1;--i)
    14         {
    15             if(a[i]<10)printf("%d",a[i]);
    16             else printf("%c",a[i]-10+'A');
    17         }
    18         printf("
    ");return ;
    19     }
    20     if(T==1)
    21     {
    22         for(int i=B-1;i>=0;--i)
    23         {
    24             a[k]=i;if(i%2==1)dfs(k+1,0);
    25             else dfs(k+1,1);
    26         }
    27     }
    28     else
    29     {
    30         for(int i=0;i<B;++i)
    31         {
    32             a[k]=i;if(i%2==1)dfs(k+1,1);
    33             else dfs(k+1,0);
    34         }
    35     }
    36 }
    37 int main()
    38 {
    39     scanf("%d%d",&n,&B);
    40     dfs(1,0);
    41     return 0;
    42 }
  • 相关阅读:
    Python基础-序列化模块
    dubbox
    小型供销系统
    MyBatis与SpringBoot整合案例(一)
    SpringBoot第二节
    SpringBoot第一节
    Dubbo案例SSM整合
    Dubbo生产者和消费者
    Zookeeper实战分布式锁
    Zookeeper Watcher和选举机制
  • 原文地址:https://www.cnblogs.com/CHerish_OI/p/8817712.html
Copyright © 2011-2022 走看看