Gray Code
Posted YuriFLAG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gray Code相关的知识,希望对你有一定的参考价值。
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
Example: 1 : 0 , 1
2: 00 01 11 10
3: 000 001 011 111 110 101
通过上面的观察可以知道, n 位 的gray code 实在 n - 1的基础上 高位 添加 0 和 1 得到的。 并且,前2 ^ n-1 项是在 n - 1位 gray code 的基础上 添加 0 得到的, 而后 2 ^ n -1 项是逆序输出 n - 1位gray code 添加1 得到的。
1 import java.util.*; 2 3 public class GrayCode { 4 public String[] getGray(int n) { 5 String[] result = new String[(int)Math.pow(2, n)]; 6 if (n == 1) { 7 result[0] = "0"; 8 result[1] = "1"; 9 return result; 10 } 11 String[] tmp = getGray(n - 1); 12 for (int i = 0; i < tmp.length; i++) { 13 result[i] = "0" + tmp[i]; 14 } 15 for (int i = tmp.length - 1, j = tmp.length; i >= 0 && j < result.length; i--, j++) { 16 result[j] = "1" + tmp[i]; 17 } 18 return result; 19 } 20 }
以上是关于Gray Code的主要内容,如果未能解决你的问题,请参考以下文章