格雷码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 - ; i >= ; --i)
{
cout << ((x >> i)&);
}
cout << endl;
GrayCode(++x, Max,N);
}
void TestGray()
{
int x = ;
int max = ;
int n = ;
GrayCode(x, max, n);
}
备注:
我只是简单实现了功能。
至于人家给的输入输出要求,一笑而过了。
你可以进行函数的封装,最外接口符合题目即可。其他函数都是你的实现了
格雷码C++实现的更多相关文章
- [LeetCode] Gray Code 格雷码
The gray code is a binary numeral system where two successive values differ in only one bit. Given a ...
- BZOJ1081[SCOI2005]超级格雷码
Description 著名的格雷码是指2n个不同n位二进制数(即0~2n-1,不足n位在前补零)的一个排列,这个排列满足相邻的两个二进制数的n位数字中最多只有一个数字不同(例如003和001就有一个 ...
- 格雷码原理与Verilog实现
格雷码原理 格雷码是一个叫弗兰克*格雷的人在1953年发明的,最初用于通信.格雷码是一种循环二进制码或者叫作反射二进制码.格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于这种特点 ...
- FPGA学习笔记之格雷码、边沿检测、门控时钟
一.格雷码 格雷码的优点主要是进位时只有一位跳变,误码率低. 1.二进制转格雷码 我们观察下表: 二进制码 格雷码 00 00 01 01 10 11 11 10 二进制码表示为B[],格雷码表示为G ...
- LeetCode:Gray Code(格雷码)
题目链接 The gray code is a binary numeral system where two successive values differ in only one bit. Gi ...
- c++实现gray code(格雷码)
今天别人问的一道题,强调用分治法实现 =.= 百度了一下格雷码,然后写了一下. 关于格雷码大家看百度的吧,特别详细,贴个图: 代码如下(header_file.h是我自己写的一个头文件,包括常见的ve ...
- 产生n位元的所有格雷码
原文链接:http://blog.csdn.net/beiyeqingteng/article/details/7044471 问题:产生n位元的所有格雷码. 格雷码(Gray Code)是一个数列集 ...
- Gray code---hdu5375(格雷码与二进制码,普通dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5375 题意就是:给你一串二进制码,里面可能含有'?'这个既可以表示0又可以表示1, 让我们把这个二进制 ...
- HDU 5375 Gray code 格雷码(水题)
题意:给一个二进制数(包含3种符号:'0' '1' '?' ,问号可随意 ),要求将其转成格雷码,给一个序列a,若转成的格雷码第i位为1,则得分+a[i].求填充问号使得得分最多. 思路:如果了 ...
- gray code 格雷码 递归
格雷码 the n-1 bit code, with 0 prepended to each word, followd by the n-1 bit code in reverse order, w ...
随机推荐
- Mysql Having的用法:对group by之后的分组加限制条件(复制)
在使用聚合函数之前,我们可以通过where对查询加限制条件,那么如果在group by之后我们要对分组里面的数据再加限制条件怎么办呢?答案是having. HAVING子句可以让我们筛选成组后的各组数 ...
- 长网址 短网址(http://www.zhihu.com/question/19852154?rf=21975802)
短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代 ...
- [C#]浮点数除零无法捕获异常的解决办法
解决方法: //运算前先检查被除数是否为零,为零则手动抛出除零异常 if (numberB == 0.0) { throw new DivideByZeroException(); } Result ...
- ASP.NET MVC5 视图相关学习
MVC Razor模板引擎中3个重要的方法:@RenderBody.@RenderPage.@RenderSection 1.@RenderBody 在Razor引擎中布局页面类似于asp.net中的 ...
- javaWeb 使用线程池+队列解决"订单并发"问题
解决方式:使用线程池+队列 项目基于Spring,如果不用spring需要自己把 ThreadPoolManager.java 改成单例模式 1.写一个Controller(Spring mvc) / ...
- centos升级vim
vim7爆出严重安全漏洞,升级到vim8,过程如下: yum remove vim -y yum install ncurses-devel -y 如果失败,提示unknown host apt.sw ...
- java使用freemarker 生成word文档
java 生成word文档 最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的 ...
- USBasp制作资料及全过程(菜鸟版)
源:USBasp制作资料及全过程(菜鸟版) 一.usbasp 的一般性介绍: 1.下载线,是“ISP”(In System Programmability:“在系统编程”)或“IAP”(In Appl ...
- logstash5.x安装及简单运用
Logstash requires Java 8. Java 9 is not supported. 1.检测是否安装了java环境 [root@node3 ~]# java -version jav ...
- Jclemo_ CTF_WEEK1~2学习总结
Jclemo_ CTF_WEEK1~2学习总结 纯属因为感觉有趣,加入了ForDKYCTF小组学习,心得体会就不说了,总结一下最近的学习知识点(不全,参考我自己的940133658@qq.com的印象 ...