格雷码--蓝桥杯
这道题结合树状数组的lowbite 运算可得到答案
#include <stdio.h>
void show(int a,int n)
{
int i;
int msk = 1<<n;
for(i=0; i<n; i++){
printf((a & msk)? "1" : "0");
msk = msk >> 1;
}
printf("\n");
}
void f(int n)
{
int i;
int num = 1;
for(i=0; i<n; i++) num = num<<1;
int a = 0;
for(i=0; i<num; i++){
show(a,n);
if(i%2==0){
a = a ^ 1;
}
else{
a = a^((a&(-a))<<1) ; //填空
}
}
}
int main()
{
f(4);
return 0;
}