美文网首页
格雷码的生成

格雷码的生成

作者: SarahLiu | 来源:发表于2016-08-30 16:45 被阅读0次

题目描述

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

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

测试样例:

1

返回:["0","1"]

分析:

方法一:递归

//递归的思路就是n位gray码是由n-1位gray码生成,举个例子简单一些:

//比如求n=3的gray码,首先知道n=2的gray码是(00,01,11,10)

//那么n=3的gray码其实就是对n=2的gray码首位添加0或1生成的,添加0后变成(000,001,011,010)

//添加1后需要顺序反向就变成(110,111,101,100)

//组合在一起就是(000,001,011,010,110,111,101,100)

classGrayCode {

public:

    vector getGray(intn) {

// write code here

    vector gray;

   if(n == 1){

       gray.push_back("0");

       gray.push_back("1");

       return gray;

   }

   vector last_gray = getGray(n-1);

   for(int i = 0; i < last_gray.size(); i++)

   gray.push_back("0"+last_gray[i]);

   for(int i = last_gray.size()-1; i >= 0; i--)

   gray.push_back("1"+last_gray[i]);

   return gray;

 }

};

相关文章

  • 格雷码Graycode

    格雷码是什么见百度百科。 这是一个简单的递归问题:1.生成n+1位的格雷码:第一位不反转,递归生成n位的格雷码;然...

  • 格雷码的生成

    题目描述 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code)...

  • LeetCode 力扣 89. 格雷编码

    题目描述(中等难度) 生成 n 位格雷码,所谓格雷码,就是连续的两个数字,只有一个 bit 位不同。 解法一 动态...

  • 利用java-ArrayList生成格雷码

    利用java中的ArrayList类递归实现格雷码的生成。输入一个正整数n;输出所有长度为n的格雷码位串列表。

  • 格雷码生成规则

  • 算法题--生成格雷码

    0. 链接 题目链接 1. 题目 The gray code is a binary numeral system...

  • 汇编实验:格雷码转二进制(ASCII码)的实现和调试

    实验说明 格雷码和二进制的转换 思路 为完成实验内容,可通过查表和格雷码计算两种方式完成,此处使用格雷码直接计算得...

  • [LeetCode By Python] 89. Gray Co

    一、题目 二、解题 Gray Code:格雷码 题目的意思是在给出一个字节长度n,生成一个序列,这个序列的要求是格...

  • Verilog——格雷码计数器

    - 格雷码(Gray code):​ 第一次接触格雷码是在本科的数电课本上,其在可靠性编码占据重要位置...

  • 89. Gray Code 格雷码

    题目 给定一个整数 n,返回 2 的 n 次幂的序列,使得这个序列满足格雷码。格雷码的特点是,将这些数字分解为二进...

网友评论

      本文标题:格雷码的生成

      本文链接:https://www.haomeiwen.com/subject/cqzfettx.html