LeetCode 格雷碼序列的生成

2021-09-08 05:41:32 字數 903 閱讀 6373

問題概述:

在一組數的編碼中,若隨意兩個相鄰的**僅僅有一位二進位制數不同。則稱這樣的編碼為格雷碼。

2位數的格雷碼序列:

00 : 0

01 : 1

11 : 3

10 : 2

找規律:

假設要求n位的格雷碼,先要求出n-1位的格雷碼。

迴圈上一次格雷碼的每一位,都會生成兩個新的格雷碼: 

統計'1'出現的次數

假設為偶數: 兩個新格雷碼分別為***1和***0

假設為奇數: 兩個新格雷碼分別為***0和***1

以3位格雷碼為例:

由00得:

000 = 00+(0)

001 = 00+(1)

由01得:

011 = 01+(1)

010 = 01+(0)

由11得:

110 = 11+(0)

111 = 11+(1)

由10得:

101 = 10+(1)

100 = 10+(0)

然後把新格雷碼加入到序列用於下一次格雷碼序列的計算。

實現**:

public class solution 

if(n == 0);

} if(n == 1);

} if(n == 2); }

var r = new list();

for(var i = 3;i <= n; i++)

}if(countone % 2 == 0)

else

} r = tmp; }

var ret = new list();

foreach(var s in r)

return ret;

}}

生成格雷碼

程式設計題 生成格雷碼 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 1返回 0 1 思想 用遞迴法實現,把求n位格雷碼分解為求n 1...

生成格雷碼

題目描述 在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼 gray code 請編寫乙個函式,使用遞迴的方法生成n位的格雷碼。給定乙個整數n,請返回n位的格雷碼,順序為從0開始。測試樣例 1返回 0 1 1 n 1時,返回0,1 2 n 2時,返回00,01,10,...

關於格雷碼

典型二進位制格雷碼 binary gray code 簡稱格雷碼,因1953年公開的弗蘭克 格雷 frank gray,18870913 19690523 專利 pulse code communication 而得名。在一組數的編碼中,若任意兩個相鄰的 只有一位二進位制數不同,則稱這種編碼為格雷碼...