生成格雷码
2016-03-14 22:52
246 查看
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同, 则称这种编码为格雷码(Gray Code),请编写一个函数,使用递归的方法生成N位的格雷码。
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
测试样例:
给定一个整数n,请返回n位的格雷码,顺序为从0开始。
测试样例:
1
返回:["0","1"]
import java.util.ArrayList; import java.util.List; public class GrayCode { public static void main(String[] args) { GrayCode grayCode = new GrayCode(); String[] str = grayCode.getGray(4); for (int i = 0; i < str.length; i++) { System.out.print("[" + "\"" + str[i] + "\"],"); } } public String[] getGray(int n) { String[] Gray = { "0", "1" }; if (n == 1) { return Gray; } String[] lastSeq = getGray(n - 1); List<String> thisSeq = new ArrayList<String>(); for (int i = 0; i < lastSeq.length; i++) { thisSeq.add("0" + lastSeq[i]); } for (int i = lastSeq.length - 1; i >= 0; i--) { thisSeq.add("1" + lastSeq[i]); } return thisSeq.toArray(new String[thisSeq.size()]); } }["0000"],["0001"],["0011"],["0010"],["0110"],["0111"],["0101"],["0100"],
["1100"],["1101"],["1111"],["1110"],["1010"],["1011"],["1001"],["1000"],
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- mysql binlog二进制日志详解
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 详解C++编程中对二进制文件的读写操作
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析