zoukankan      html  css  js  c++  java
  • 算法分析与设计——格雷码

    #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;  

    }  

    运行结果截图

  • 相关阅读:
    HTML+CSS+JS设计注册页面
    1.20学习总结
    Linux安装python3
    Linux命令
    vue安装
    Python实现发送邮件
    C语言带参数的main函数
    Fibonacci 数列递归 重复计算
    gray code 格雷码 递归
    河内塔
  • 原文地址:https://www.cnblogs.com/rourou123/p/8067418.html
Copyright © 2011-2022 走看看