格雷码##
题目大意是输入n,输出2^n个格雷码。(每个格雷码n位)
#include<stdio.h>
int n;char s[100];
void fx(int b,bool mod){
if(b!=n){
s[b]='0'+mod;
fx(b+1,0);
s[b]='0'+!mod;
fx(b+1,1);
return;
} else
printf("%s\n",s);
}
int main(){
scanf("%d",&n);
fx(0,0);
return 0;
}
fx()函数有两个模式,正向输出和反向数出。观察格雷码就可以发现n+1位格雷码等于0加n位正向格雷码再加1加n位反向格雷码。证明也很简单。就不讲了。