格雷码--蓝桥杯

  • 这道题结合树状数组的lowbite 运算可得到答案
#include 
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;
}
全部评论

相关推荐

10-16 19:16
Java
点赞 评论 收藏
分享
面了100年面试不知...:头像换成柯南再试试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务