gray code 格雷码 递归

格雷码

the n-1 bit code, with 0 prepended to each word, followd by the n-1 bit code in reverse order,

with 1 prepended to each word.

public class GrayCode{
    public static void gray(int n, String prefix)
    {
        if(n == 0)
            System.out.println(prefix);
        else
        {
            gray(n-1,prefix + "0");
            yarg(n-1,prefix + "1");
        }
    }
    public static void yarg(int n, String prefix)
    {
        if(n == 0)
            System.out.println(prefix);
        else
        {
            gray(n-1,prefix + "1");
            yarg(n-1,prefix + "0");
        }
    }
    public static void main(String[] args)
    {
        int N = Integer.parseInt(args[0]);
        gray(N, "");
    }
}

运行结果

> java GrayCode 3
000
001
011
010
110
111
101
100

  

时间: 2024-12-10 09:45:32

gray code 格雷码 递归的相关文章

算法学习 - Gray Code(格雷码)的解释和c++实现

Gray Code(格雷码) 典型的二进制格雷码(Binary Gray Code)简称格雷码.当初是为了通信,现在则常用于模拟-数字转换和位置-数字转换中. 特点是:一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码. 格雷码属于可靠性编码,是一种错误最小化的编码方式. 格雷码是一种绝对编码方式. 由于格雷码是一种变权码. 格雷码的十进制数奇偶性与其码字中1的个数的奇偶性相同. 十进制转换为格雷码 好的上面我们已经介绍那么多了,那么我来说下如何把一个十进制的数字转换

[LeetCode] 89. Gray Code 格雷码

The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0. Ex

LeetCode Gray Code 格雷码

题意:提供一个数字n,代表二进制的个数,那么就有2的n次方个可能性了,从0到2^n-1.将其转成格雷码,再直接将二进制的格雷码按二进制的读法变成整数,装在vector容器中返回,要有序(否则你直接将0-2^n-1返回算了). 思路:咋一看!什么是格雷码?假设有1个整数,是二进制形式的,将其最高位的1提出来,其他的每一位等于该位上的数字与该数字的前一位之异或. 好像很复杂的样子?举例: 整数 21 = 0001 0101 二进制 ,格雷码前4位是这样的0001,这就是将二进制的最高位的1提出来啦,

[LeetCode] Grey Code 格雷码

The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0. Fo

089 Gray Code 格雷编码

格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异.给定一个代表编码总位数的非负整数 n,打印格雷码序列.格雷码序列必须以0开头.例如, 给定 n = 2, 返回 [0,1,3,2].其格雷编码是:00 - 001 - 111 - 310 - 2注意:对于给定的 n,其格雷编码的顺序并不唯一.例如 [0,2,3,1] 也是一个有效的格雷编码顺序.目前,系统只可以根据一个格雷编码序列实例进行判断.请您谅解.详见:https://leetcode.com/problems/g

格雷码与二进制码的转换

Gray Code是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环.单步特性消除了随机取数时出现重大误差的可能,它的反射.自补特性使得求反非常方便.格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲.而格雷码则没有这一缺

格雷码与二进制之间的互换

#include <stdio.h> #include <stdlib.h> /*格雷码转二进制*/ int grayToBin(int n) { int size = 0; int res[255]; int out = 0; int flag = 0; /*先缓存*/ while (n) { res[size++] = n%2; n /= 2; } /*利用转换关系求出最后的结果*/ for (int i=size-1; i>=0; i--) { flag = res[i

HDU HDU 5375 Gray code(二进制和格雷码)

Description: The reflected binary code, also known as Gray code after Frank Gray, is a binary numeral system where two successive values differ in only onebit (binary digit). The reflected binary code was originally designed to prevent spurious outpu

leetCode 89.Gray Code (格雷码) 解题思路和方法

The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0. Fo