• 算法分析与设计——格雷码


    #include <stdio.h>   

    #include <stdlib.h>   

      

    #define MAX 1024   

    #define M 10

      

    int a[MAX][M];   

      

    void ForeCode(int forenum, int n)  

    {  

        int i, j;  

        for(i = 0; i <= forenum; i++)

            for(j = n - 2; j >= 0; j--)  

                a[i][j + 1] = a[i][j];  

        for(i = 0; i <= forenum; i++)  

            a[i][0] = 0;  

    }  

    void BackCode(int backbegin, int backend, int n)  

    {  

        int i, j;  

        for(i = 0; i < backbegin; i++)

            for(j = 1; j < n; j++)  

                a[backend - i - 1][j] = a[i][j];  

            for(i = backbegin; i < backend; i++)

                a[i][0] = 1;  

    }  

    void GrayCode(int nBits)  

    {  

        int i, k, m = 1;  

        if(nBits == 1)  

        {  

            a[0][0] = 0;  

            a[1][0] = 1;  

        }  

        else  

            GrayCode(nBits - 1);

        for(i = 0; i < nBits; i++)  

            m = 2 * m;    

        k = m / 2;  

        ForeCode(k - 1, nBits);  

        BackCode(k, m, nBits);  

    }  

      

    void PrintGrayCode(int nBits)  

    {  

        int i, j, m = 1;  

        for(i = 0; i < nBits; i++)  

            m = 2 * m;  

        for(i = 0; i < m; i++)  

        {  

            for(j = 0; j < nBits; j++)  

                printf("%d", a[i][j]);  

            printf(" ");  

        }  

    }  

      

      

    int main()  

    {  

        int nBit;  

        printf("请输入n值为:",nBit);

    scanf("%d",&nBit);

        GrayCode(nBit);  

        PrintGrayCode(nBit);  

        return 0;  

    }  

    运行结果截图

  • 相关阅读:
    09课堂问题整理
    08课堂问题整理
    Eclipse开发工具的编码问题
    【伸手党】需要我帮你Google/百度吗?
    IDEA更改左侧目录层级结构
    IDEA设置类和方法的注释
    一篇系列
    "Notice: unserialize(): Error at offset xx of xxx bytes"错误的处理(转载)
    git push命令每次都要输入用户名和密码的问题处理
    在网站添加qq客服功能
  • 原文地址:https://www.cnblogs.com/rourou123/p/8067418.html
Copyright © 2020-2023  润新知