#include<stdio.h>
#include<string.h>
char a[500][50],b[500][50];
void Gray(int n){
char str1[20]="0";
char str2[20]="1";
int i,j,p;
if(n==1){
strcpy(a[0],str1);
strcpy(a[1],str2);
}else{
Gray(n-1);
i=2;
for(j=0;j<n-2;j++)
i=i*2;
for(p=0;p<i;p++){
if(p%2==0){
strcpy(b[p*2],a[p]);
strcat(b[p*2],str1);
strcpy(b[p*2+1],a[p]);
strcat(b[p*2+1],str2);
}else{
strcpy(b[p*2],a[p]);
strcat(b[p*2],str2);
strcpy(b[p*2+1],a[p]);
strcat(b[p*2+1],str1);
}
}
for(p=0;p<i*2;p++)
strcpy(a[p],b[p]);
}
}
int main(){
int i=2,j,t[10],m,k,p;
scanf("%d",&m);
for(j=0;j<m;j++)
scanf("%d",&t[j]);
for(j=0;j<m;j++){
printf("\n");
for(k=0;k<t[j]-1;k++)
i=i*2;
Gray(t[j]);
for(k=0;k<i;k++){
for(p=0;p<t[j];p++)
printf("%c ",a[k][p]);
printf("\n");
}
}
}
格雷码问题
最新推荐文章于 2024-07-19 22:36:19 发布