编程实现格雷码(Gray Code)

来源:互联网 发布:时代网络大厦美食广场 编辑:程序博客网 时间:2024/05/22 02:29

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

解题思路:
这里写图片描述

#include <iostream>#include <vector>#include <string>using namespace std;vector<string> GetGray(int n){    vector<string> vec;    while (n--)    {        vector<string>::iterator p = vec.begin();        if (p == vec.end())        {            vec.push_back("0");            vec.push_back("1");        }        else        {            vector<string> temp(vec);            for (vector<string>::iterator p = vec.begin(); p != vec.end(); p++)                *p = "0" + *p;            for (vector<string>::iterator p = temp.end()-1; p != temp.begin(); p--)                vec.push_back(("1" + *p));            vec.push_back("1" + *temp.begin());        }    }    return vec;}int main(){    vector<string> res=GetGray(4);    for (vector<string>::iterator p = res.begin(); p != res.end(); p++)        cout << *p << endl;    return 0;}

这里写图片描述

原创粉丝点击