递归实现生成Grey码

腾讯2016研发笔试题1:

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。

给定一个整数n,请返回n位的格雷码,顺序为从0开始。

测试样例:

input:1
output:["0","1"]
vector<string> Gray(int n){
   vector<string>code;
   if(n==1){
        code.push_back("0");
        code.push_back("1");
        return code;
   }
   vector<string>last=Gray(n-1);

   for(int i=0;i<last.size();i++){
      code.push_back("0"+last[i]);
   }
   for(int i=last.size()-1;i>=0;i--){
      code.push_back("1"+last[i]);
   }
   return code;
}

使用容器类vector避免使用动态数组时出现的内存问题。

时间: 2024-08-27 22:40:25

递归实现生成Grey码的相关文章

生成格雷码 转自leetcode

在一组数的编码中,若两个相邻的代码中只有一个二进制数不同,则称这种编码为格雷码. 下面尝试使用递归的方法来生成格雷码 vector<int> GrayCode(int n){//n表示格雷码的位数 if(n==0) return vector<int>(1)//返回只有一个0的容器 vector<int> res=GrayCode(n-1);//采用递归方法 for(int i=res.size()-1 ; i >=0 ;i-- )//采用从后往前的方式 res.

[编程题]生成格雷码

[编程题] 生成格雷码 腾讯在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码.给定一个整数n,请返回n位的格雷码,顺序为从0开始.测试样例:1返回:["0","1"] class GrayCode { vector<string> res; public: vector<string> getGray(int n) { // write c

.net 生成拼音码与五笔码

首先加入配置文件: <?xml version="1.0" encoding="utf-8" ?> <CodeConfig> <SpellCode> <A>阿啊锕嗄厑哎哀唉埃挨溾锿鎄啀捱皑凒溰嘊敳皚癌毐昹嗳矮蔼躷噯藹譪霭靄艾伌爱砹硋隘嗌塧嫒愛碍暧瑷僾壒嬡懓薆曖璦鴱皧瞹馤鑀鱫安侒峖桉氨庵谙萻腤鹌蓭誝鞌鞍盦馣鮟盫韽啽雸垵俺唵埯铵隌揞罯銨犴岸按荌案胺豻堓婩暗貋儑錌黯肮岇昂昻枊盎醠凹坳垇柪軪爊敖厫隞嗷嗸嶅廒滶獒獓遨熬璈蔜翱聱螯

lazarus:将字符串加密生成md5码

var sSrc, sDst: string; begin sSrc := EditSrc.Text; sDst := MD5Print(MD5String(sSrc)); EditDest.Text := sDst; lazarus:将字符串加密生成md5码,布布扣,bubuko.com

Python Show-Me-the-Code 第 0001 题 生成激活码

第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? 不知道用什么方法生成激活码比较靠谱,所以就用字母和数字的随机组合了.如果有更好的方法请告诉我:) 生成的大概是这样子的: 0001.生成激活码.py #!/usr/bin/env python #coding: utf-8 import string, random #激活码中的字符和数字 field = stri

如何生成邀请码?

限制条件如下: 1 邀请码比较短, 2 速度要快 3 用户不能很容易的发现规律 方案1:用自增 条件一和二都可以满足,但条件三就不能满足. 方案2:用随机数去生成邀请码 条件1和3可以满足,但是因为要检测碰撞,所以条件2不能满足. 方案3:利用自 1970 年 1 月 1 日(00:00:00 GMT)至当前时间的总秒数. 比如存在int里,如果是4个字节,然后直接将它的十六进制格式的字符当作邀请码,可以生成8位的邀请码. 如果是8个字节,可以直接生成16位的邀请码,如果这个太长了,可以将其小端

MSSQL 生成拼音码

MSSQL 生成拼音码 /*============================================================================== 名称:fn_Get_Pin 功能:生成拼音码 创建:XXX 时间:2009年2月23日 ==============================================================================*/ CREATE function [dbo].[fn_Get_Pi

教练自助生成优惠码

海豚驾考教练自助生成优惠码 1.进入个人中心页,点击[我的优惠码] 2.这个页面列出了教练所有自助生成的优惠码,最近生成的显示在最上面 要生成新的优惠码,请点击顶部[申请优惠码] 查看已有的优惠码详情,选择一个点击即可 3.申请优惠码 最少填写一项:即优惠金额,(可指定使用次数.适用班型) 其它两项不填,表示没有使用限制 注意:优惠金额不能太大,优惠后,最低支付价格不能低于3500 4.优惠码详情页 可分享给有意向报名的人 可随时停用.启用优惠码

【Python学习笔记】-生成激活码

很多收费软件都需要用激活码来注册,限时促销活动也需要填写激活码来进行.激活码应用非常广泛,本文主要讲解如何用Python语言生成我们常见的激活码.激活码一般是由26个大写字母和10个数字任意组合而成,长度为12位或者16位的居多.一个激活码里的字符是可以重复的,而且必须要保证激活码是不能重复的.可以分别随机生成16个字符,然后组成一个字符串,放在字典中,通过字典来判断是否有重复的激活码.以下代码是用Python生成10个16位的激活码. #coding=utf-8 import random i