生成格雷码(腾讯2016研发工程师编程题)
来源:互联网 发布:usb虚拟打印机端口 编辑:程序博客网 时间:2024/06/03 02:27
生成格雷码(腾讯2016研发工程师编程题)
1、题目:
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
测试样例:
1
返回:[“0”,”1”]
2、思路:
格雷码:异或生成、反射码递归生成(get新技能)。
欲得n+1位码,先0+n位码,后1+n位逆序码(存放顺序)。
3、代码:
#include <iostream>#include <vector>#include <string>using namespace std;vector<string> getGray(int n) { // write code here if (n != 1) { vector<string> vs = getGray(n - 1); for (int i=vs.size()-1;i>=0;--i) { vs.push_back("1" + vs[i]); vs[i] = "0" + vs[i]; } return vs; } else { return vector<string>{"0", "1"}; }}int main(){ int n; cin >> n; for (const string &str : getGray(n)) { cout << str << endl; } system("pause"); return 0;}
4、结果:
0 0
- 生成格雷码(腾讯2016研发工程师编程题)
- 递归生成格雷码----腾讯2016研发工程师编程题
- 腾讯2016研发工程师编程题生成格雷码
- 腾讯2016研发工程师编程题之生成格雷码
- 腾讯2016研发工程师编程题——生成格雷码
- 腾讯2016研发工程师编程题(一)----[编程题] 生成格雷码
- 腾讯2016研发工程师编程题
- 腾讯2016研发工程师编程题
- 腾讯2016研发工程师编程题
- 试卷: 腾讯2016研发工程师编程题
- 腾讯2016研发工程师编程题
- 腾讯2016研发工程师编程题
- 微信红包(腾讯2016研发工程师编程题)
- 腾讯2016研发工程师编程题(两题)
- 腾讯2016研发工程师编程题(2道)
- 腾讯2016研发工程师编程题之微信红包
- 腾讯2016年研发工程师编程题--完全解析
- 腾讯2016研发工程师编程题(二)----微信红包
- 文件IO(1)--creat和open
- 常用命令
- plsql 登录 01034 27101 , startup ORA-00119 ,ORA-00132
- GridControl获取同列多个汇总中的某一个汇总值
- Linux系统结构
- 生成格雷码(腾讯2016研发工程师编程题)
- 7.8.实验 解题参考
- HTML&CSS基础学习笔记1.9-添加图片
- POJ1321(DFS深搜)
- IO流
- hdu_5085_Counting problem(莫队分块思想)
- eclipse js 格式化的xml文件,直接导入到eclipse就可以用
- 自定义时间格式模板
- 李迅雷:大城市化和居民加杠杆能支撑房价多久