首页 > 试题广场 >

格雷码

[编程题]格雷码
  • 热度指数:10481 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
格雷码是一种二进制编码系统,如果任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)
给定一个非负整数n,表示代码的位数,打印格雷码的序列。格雷码序列必须以0开头。
例如:给定n=2,返回[0,1,3,2]. 格雷码的序列为:
00 - 0
01 - 1
11 - 3
10 - 2
注意:
  • 对于一个给定的n,格雷码的序列不一定是唯一的,
  • 例如:根据题目描述,[0,2,3,1]也是一个有效的格雷码序列

示例1

输入

2

输出

[0,1,3,2]
头像 华科不平凡
发表于 2020-08-25 17:53:36
这道题目可以用普通的循环来做,也可以用动态规划来做,相比起来动态规划的思路更加清晰,代码逻辑更加紧密。 当n为1时,输出0,1,n为2时,输出00,01,11,10,当n为3时,输出00,01,11,10,110,111,101,100。 规律:11,10是在1,0高位上+1得到;110,111,1 展开全文