zoukankan      html  css  js  c++  java
  • [编程题]生成格雷码

    [编程题] 生成格雷码

    腾讯
    在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
    给定一个整数n,请返回n位的格雷码,顺序为从0开始。
    测试样例:
    1
    返回:["0","1"]

    class GrayCode {
        vector<string> res;
    public:
        vector<string> getGray(int n) {
            // write code here
            string s;
            getGrayCore(s,n);
            return res;
        }
        void getGrayCore(string&s,int n)
        {
            if(n==0) 
            {
                res.push_back(s);
                return;
            }
            s.push_back('0');
            getGrayCore(s,n-1);
            s.pop_back();
            
            s.push_back('1');
            getYargCore(s,n-1);
            s.pop_back();
        }
        void getYargCore(string&s,int n)
        {
            if(n==0) 
            {
                res.push_back(s);
                return;
            }
            s.push_back('1');
            getGrayCore(s,n-1);
            s.pop_back();
            
            s.push_back('0');
            getYargCore(s,n-1);
            s.pop_back();
        }
    };
  • 相关阅读:
    问题 D: 错误探测
    问题 C: 计算矩阵边缘元素之和
    同行列对角线的格子
    矩形交换行
    问题 R: 鸡尾酒疗法
    问题 : 字符串p型编码
    循环结构 整数的个数
    字符串c++字符环
    ISBN码字符串c++
    Uva
  • 原文地址:https://www.cnblogs.com/learning-c/p/5740300.html
Copyright © 2011-2022 走看看