题解洛谷P2328 [SCOI2005]超级格雷码

传送门

CSP2019-S2的T1就是格雷码,打开BZOJ,第一页就是这道题。

似乎是直接爆搜
还是数学。。。

直接暴力

#include<cstdio>
#include<iostream>
using namespace std;
const char ss[]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\0"};
int ans[110],n,m;
void dfs(int num,int op){
    if(num==n+1){
        for(register int i=1;i<=n;i++){
            printf("%c",ss[ans[i]]);
        }
        puts("");
        return ;
    }
    if(op==0){
        for(register int i=0;i<m;i++){
            ans[num]=i;
            dfs(num+1,(i&1)? 1:0);
        }
    }else{
        for(register int i=m-1;i>=0;i--){
            ans[num]=i;
            dfs(num+1,(i&1) ?0:1);
        }
    }
}
int main(){
    scanf("%d%d",&n,&m);
    dfs(1,0);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/STOGMH/p/11920923.html
今日推荐