牛客網:グレイコード生成(Java)
6008 ワード
グレイコードの生成
題目は1組の数の符号化の中で説明して、もし任意の2つの隣接するコードが1ビットのバイナリ数だけ異なっているならば、このような符号化をグレイコード(Gray Code)と呼んで、1つの関数を編纂して、再帰的な方法を使ってNビットのグレイコードを生成します.
整数nを指定すると、nビットのグレイコードを返し、0から順に返します.
テストサンプル:入力:1出力:["0","1"]
問題:
題目は1組の数の符号化の中で説明して、もし任意の2つの隣接するコードが1ビットのバイナリ数だけ異なっているならば、このような符号化をグレイコード(Gray Code)と呼んで、1つの関数を編纂して、再帰的な方法を使ってNビットのグレイコードを生成します.
整数nを指定すると、nビットのグレイコードを返し、0から順に返します.
テストサンプル:入力:1出力:["0","1"]
問題:
n( :2) ( :00 01 10 11)
( : 00 01 11 10)
1. n n-1
2. n-1 , “0”,
3. 1 n
: 2 1 ["0","1"]
, 0 ["00","01"]
1 ["00","01","11","10"]
public static String[] getGray(int n) {
if(n == 1) {
String[] result = new String[2]; // 1 2
result[0] = "0";
result[1] = "1";
return result;
}
String[] temp = getGray(n-1);
String[] result = new String[2*temp.length]; // n 1 2
for(int i = 0; i < temp.length; i++) {
result[i] ="0" + temp[i];
}
for(int i = 0; i < temp.length; i++) {
result[i + temp.length] = "1" + temp[temp.length-1-i];
}
return result;
}