格雷碼##
題目大意是輸入n,輸出2^n個格雷碼。(每個格雷碼n位)
#include<stdio.h>
int n;char s[100];
void fx(int b,bool mod){
if(b==n){
printf("%s\n",s);
return;
}
s[b]='0'+mod;
fx(b+1,0);
s[b]='0'+!mod;
fx(b+1,1);
}
int main(){
scanf("%d",&n);
fx(0,0);
return 0;
}
fx()函數有兩個模式,正向輸出和反向數出。觀察格雷碼就可以發現n+1位格雷碼等于0加n位正向格雷碼再加1加n位反向格雷碼。證明也很簡單。就不講了。