传送门
CSP2019-S2的T1就是格雷码,打开BZOJ,第一页就是这道题。
似乎是直接爆搜
还是数学。。。
直接暴力
#include<cstdio>
#include<iostream>
using namespace std;
const char ss[]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ "};
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;
}