zoukankan      html  css  js  c++  java
  • 格雷码C++实现

    格雷码C++实现

    题目

    给定一个整数n,请返回n位的格雷码,顺序从0开始,要求递归实现。

    格雷码:

    在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。

    http://baike.baidu.com/link?url=GNm2SqnlhGiX-Y3_TStF_U9cQJYERb39y-c-3INJhpiiU6B8YZ5Pu9bZCHZiGPid8g8OB3Fvf9Z_3vTMZypfFK

    参看各类码更细节的介绍

    2问题分析

    其实最初看到简单的格雷码定义,以及题目要求完全是蒙了。没明白这是什么鬼

    直到.....刚刚百度了,认真看了,才明白这是什么鬼~|~

    说白了就是打印一个n位的二进制编码,范围从0到2的n次-1.

    至于递归实现,小意思(关键还是看懂题意/kb)

    然后就没啥说的了,直接实现

    void GrayCode(int &x,const int Max,const int N)
    {
        int tmp = x;
        if (x > Max)
        {
            return;
        }
        for (int i = N - 1; i >= 0; --i)
        {
            cout << ((x >> i)&1);
        }
        cout << endl;
        GrayCode(++x, Max,N);
    }
    void TestGray()
    {
        int x = 0;
        int max = 31;
        int n = 5;
        GrayCode(x, max, n);
    }

    备注:

    我只是简单实现了功能。

    至于人家给的输入输出要求,一笑而过了。

    你可以进行函数的封装,最外接口符合题目即可。其他函数都是你的实现了

  • 相关阅读:
    vim删除某一列
    linux下在当前文件夹查找一个字符串信息
    .tar和.tar.gz的区别
    visual studio中调用masm汇编
    iconv转码失败的原因
    终端查看
    kubectl 常用命令总结
    Charles实战之Charles抓取https请求
    Fiddler实战之拟2G、3G、4G网络进行弱网测试
    Fiddler实战之使用Fiddler模拟弱网环境
  • 原文地址:https://www.cnblogs.com/lang5230/p/5325300.html
Copyright © 2011-2022 走看看