格雷碼算法

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int a[1000] = {0};

void gray(int n)
{
    int i,j;
    if(n == 1) {a[0] = 0; a[1] = 1;}
    else {
        gray(n-1);
        j = pow(2,n-1);
        for(i = j;i<2*j;i++)
            {
                a[i] = a[2*j-1-i] + j;
            }
    }
}

int bitofh(int bi,int len)
{
    int i = 0;
    int temp = 1;
    while(i<len)
    {
        if((bi & (temp<<(len-i-1)))!=0)
        {
            printf("1");
        }
        else {printf("0");}
        i++;
    }
    printf("\n");
    return 0;
}

int main()
{
    char string[10];
    int n,k,b;
    scanf("%d",&n);
    gray(n);
    for(k=0;k<pow(2,n);k++)
    {
        bitofh(a[k],n);
    }
    return 0;
}

實現格雷碼的輸出spa

相關文章
相關標籤/搜索