格雷碼問題

格雷碼問題:
對於給定的正整數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}。
gray碼問題求解思想:
將一個規模n位gray碼序列表示爲G(n), G(n)以相反順序排列的序列表示爲G’(n)。則gray碼的構造規則即子問題的劃分規則爲:G(n+1)= 0G(n) 1G’(n) 。
gray碼問題代碼:G(n+1)= G(n) 0G’(n)1java

這是用java實現
package digui;
import java.util.Scanner;
public class digui {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n=in.nextInt();
System.out.println("————————————————遞歸實現格雷碼問題————————————");
String[] strArr=GrayCode(n);
for(int i=0;i<strArr.length;i++)
{
System.out.println(strArr[i]);
}
}
public static String[] GrayCode(int n){
String[] grayCodeArr = new String[(int)Math.pow(2,n)];
if(n<1)
{
System.out.println("你輸入的格雷碼有錯誤!");
}
if(n==1)
{
grayCodeArr[0]="0";
grayCodeArr[1]="1";
return grayCodeArr;
}
String[] before = GrayCode(n-1);ide

for(int i=0;i<before.length;i++){
        grayCodeArr[i]="0"+before[i];
        grayCodeArr[grayCodeArr.length-1-i]="1"+before[i];
    }
        return grayCodeArr;

}

}ui

相關文章
相關標籤/搜索