对于给定的正整数n,格雷码为满足如下条件的一个编码序列: (1) 序列由2n个编码组成,每个编码都是长度为n的二进制位串。 (2) 序列中无相同的编码。 (3) 序列中位置相邻的两个编码恰有一位不同。 例如:n=1时的格雷码为:{0, 1}。 n=2时的格雷码为:{00, 01, 11, 10}。 n=3时的格雷码为:{000, 001, 011, 010,110,111,101,100}。 gr
1 import java.util.Scanner; 2 3 public class geleima { 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 7 System.out.print("输入n:"); 8 Scanner scan = new Scanner(System.in); 9 int n = scan.nextInt(); 10 String[] g = GrayCode(n); 11 for(int i = 0 ; i < g.length ; i ++){ 12 System.out.println(g[i]); 13 } 14 15 } 16 public static String[] GrayCode(int n) { 17 18 // 开2^n的字符串数组 19 String[] graycode = new String[(int) Math.pow(2, n)]; 20 if (n == 1) { //出口 21 graycode[0] = "0"; 22 graycode[1] = "1"; 23 return graycode; 24 } 25 //上一位元的格雷码 26 String[] last = GrayCode(n - 1); 27 //在上一位元的基础上加一层0,1 28 for (int i = 0; i < last.length; i++) { 29 graycode[i] = "0" + last[i]; 30 graycode[graycode.length - 1 - i] = "1" + last[i]; 31 } 32 33 return graycode; 34 } 35 }
1 import java.util.Scanner; 2 3 public class geleima { 4 public static void main(String[] args) { 5 // TODO Auto-generated method stub 6 7 System.out.print("输入n:"); 8 Scanner scan = new Scanner(System.in); 9 int n = scan.nextInt(); 10 String[] g = GrayCode(n); 11 for(int i = 0 ; i < g.length ; i ++){ 12 System.out.println(g[i]); 13 } 14 15 } 16 public static String[] GrayCode(int n) { 17 18 // 开2^n的字符串数组 19 String[] graycode = new String[(int) Math.pow(2, n)]; 20 if (n == 1) { //出口 21 graycode[0] = "0"; 22 graycode[1] = "1"; 23 return graycode; 24 } 25 //上一位元的格雷码 26 String[] last = GrayCode(n - 1); 27 //在上一位元的基础上加一层0,1 28 for (int i = 0; i < last.length; i++) { 29 graycode[i] = "0" + last[i]; 30 graycode[graycode.length - 1 - i] = "1" + last[i]; 31 } 32 33 return graycode; 34 } 35 }
浙公网安备 33010602011771号