- 浏览: 184677 次
- 性别:
- 来自: 济南
文章分类
最新评论
首先简单介绍一下什么是格雷码。在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。有关格雷码的详细讲解请大家查阅网上其它资料,这里主要讲解格雷码是如何编码的。
我们不妨从简单例子开始进一步看一下什么是格雷码,假设n代表格雷码的位数,当n=1时,我们只有两种选择(0, 1); 当 n =2 时,格雷码为(00, 01, 11, 10); 当n = 3时,格雷码为(000, 001, 011,010, 110, 111, 101, 100);我们发现了一个规律,就是每当增加一位,新的格雷码的前半段都是在之前的格雷码前面加上一个零,红色地方代表了格雷码的前半段。而后半段就是从后面开始在前面加上1。通过这种方式就可以写出任意位数的格雷码。
leetcode中有一道题目是关于格雷码的,在这里列举一下。给定一个整数n,输出它的格雷码序列。格雷码序列不唯一,输出一种就可以。按照上面的编码规则,我们不难写出代码,代码如下:
我们不妨从简单例子开始进一步看一下什么是格雷码,假设n代表格雷码的位数,当n=1时,我们只有两种选择(0, 1); 当 n =2 时,格雷码为(00, 01, 11, 10); 当n = 3时,格雷码为(000, 001, 011,010, 110, 111, 101, 100);我们发现了一个规律,就是每当增加一位,新的格雷码的前半段都是在之前的格雷码前面加上一个零,红色地方代表了格雷码的前半段。而后半段就是从后面开始在前面加上1。通过这种方式就可以写出任意位数的格雷码。
leetcode中有一道题目是关于格雷码的,在这里列举一下。给定一个整数n,输出它的格雷码序列。格雷码序列不唯一,输出一种就可以。按照上面的编码规则,我们不难写出代码,代码如下:
public class Solution { public List<Integer> grayCode(int n) { List<Integer> list = new ArrayList<Integer>(); if(n < 0) return list; list.add(0); for(int i = 1; i <= n; i++) for(int j = list.size() - 1; j >= 0; j--) { list.add(list.get(j) + (int)Math.pow(2, i - 1)); } return list; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 269Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 271You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 388Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 378Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 503Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 568Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 482Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 666Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 472The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 432Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 582Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 590Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 429All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 904Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 933Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 606Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 690Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 855Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 788You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 721For a undirected graph with tre ...
相关推荐
- **主函数main:**读入正整数n,调用`GrayCode`函数生成并输出相应长度的Gray码序列。 - **递归函数GrayCode:**参数k表示当前处理到的位数,当k等于n时,输出当前的Gray码;否则递归处理下一位,并通过`a[k] = '0'...
在“GrayCode(24,12)”中,“24”表示总共有24位,而“12”则指的是信息位的数量。这意味着在这样的格雷码系统中,有12位是用于传输实际数据的,而剩下的12位可能是用于校验或其他目的。 格雷码的主要优势在于它...
java java_leetcode题解之Gray Code.java
在计算机科学的海洋中,格雷码(Gray code)是一颗独特的珍珠,以其简洁而又不失智慧的方式在许多领域中展现出独特的应用价值。无论你是否曾经耳闻,本文将带您深入了解格雷码,并揭示其独特的魅力所在。 首先,...
基于《Video Block Motion Estimation Based on Gray-Code Kernels》《The Gray-Code Filter Kernels》《Real-Time Pattern Matching Using Projection Kernels》这三篇论文的具体实现
本文件的目的在于生成格雷码,用途在于三维测量,可以自行修改相关周期
标题"binary_to_gray.rar_binary_to_gray_fpga Gra_gray_gray code_格雷码"暗示了这个压缩包文件包含了一个关于在FPGA上实现二进制到格雷码转换的设计。"binary_input"是二进制数据的输入端口,它接收4位并行的二...
ACM Gray code 能accepted Description Gray code is an interesting code sequence and has many applications in computer science.No matter you have known it before or not, here are some introductions ...
public class GrayCode { public static List<Integer> generateGrayCode(int n) { List<Integer> result = new ArrayList(); if (n == 0) { result.add(0); return result; } List<Integer> subResult = ...
《格雷码(Gray Code)编码详解及其C++实现》 格雷码(Gray Code),又称葛莱码或无权...提供的"Grayp_graycode_源码"可能包含一个C++程序,演示了如何生成和转换格雷码,这对于学习和理解格雷码的实现机制非常有帮助。
在标题"Grayp_graycode_"中,"Grayp"可能是对格雷码的一种特定变体或者表示方式,但具体含义没有明确给出,通常我们还是以标准的格雷码理论为基础来讨论。 格雷码的主要特性在于它减少了连续数值之间的位变化,这...
格雷码(Gray Code),又称为灰度码或无歧义二进制码,是一种特殊的二进制编码方式,它的特点在于相邻两个数值之间只有一位不同。这种编码在电子、通信、计算机等领域有着广泛的应用,比如在数据传输、编码器、解码...
模擬Coherent 8PSK 之 BER
格雷码(Gray Code),又称为格雷编码或无歧义二进制码,是一种特殊的二进制码,它的特点是相邻两个代码之间仅有一位不同。这种特性使得在数字系统中进行编码转换时,可以减少错误的可能性,特别是在硬件设计中,如...
1721_Gray code.cpp 参考代码
### C经典算法之格雷码(Gray Code) #### 格雷码简介 格雷码(Gray Code)是一种特殊的编码方式,其特点在于任意两个相邻的代码仅有一位不同。这种编码方式最早由贝尔实验室的Frank Gray在1940年代提出,并在1953...
3. **graycode.mwl** - 灰度码(Gray Code)是一种非重叠的二进制编码方式,其中相邻数值之间只有一个位发生变化。在PLC中,灰度码常用于编码编码器的输出,因为其能减少编码错误。这个模块可能用于处理灰度码输入,...
对于这个"counter_gray.vhd"文件,我们可以期待它包含了用VHDL编写的格雷码计数器的代码。 格雷码计数器的设计通常涉及以下几个关键部分: 1. **计数状态**:计数器有多个状态,每个状态对应一个格雷码。例如,...
格雷码(循环二进制单位距离码)是任意两个相邻数的代码只有一位二进制数不同的编码,它 与奇偶校验码同属可靠性编码。 从对应的 n 位二进制码字中直接得到 n 位格雷码码字,需要先对 n 位二进制的码字,从右到 ...
本项目“GrayCode-En-Decoder”是一个基于C++实现的格雷码编码与解码工具。 在C++编程中,实现格雷码的转换主要涉及以下几个关键知识点: 1. **二进制位操作**:在C++中,我们可以利用位运算符(如`、`>>`、`&`、`...