天天看點

輸入n,輸出2^n個格雷碼

格雷碼##

題目大意是輸入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位反向格雷碼。證明也很簡單。就不講了。

繼續閱讀