題目描述:
給你兩個整數 n 和 start。你的任務是返回任意 (0,1,2,…,2^n-1) 的排列 p,並且滿足:
p[0] = start
p[i] 和 p[i+1] 的二進位制表示形式只有一位不同
p[0] 和 p[2^n -1] 的二進位制表示形式也只有一位不同
示例 1:
輸入:n = 2, start = 3
輸出:[3,2,0,1]
解釋:這個排列的二進位制表示是 (11,10,00,01)
所有的相鄰元素都有一位是不同的,另乙個有效的排列是 [3,1,0,2]
示例 2:
輸出:n = 3, start = 2
輸出:[2,6,7,5,4,0,1,3]
解釋:這個排列的二進位制表示是 (010,110,111,101,100,000,001,011)
1 <= n <= 16
0 <= start < 2^n
方法1:
(1)先將數字逐個轉為對應的格雷碼,然後找到第乙個值對應的格雷碼,並將陣列對應的進行反轉;
class
solution
; res.
reserve
(pow(2
,n))
;//預置空間
for(
int i=
1;i++i)
}//找到對應的起始位置
int index=0;
while
(res[index]
!=start)
//進行對應的反序
reverse
(res.
begin()
,res.
begin()
+index)
;reverse
(res.
begin()
+index,res.
end())
;reverse
(res.
begin()
,res.
end())
;return res;}}
;
LeetCode每日一題 1238 迴圈碼排列
tagmath difficultymedium link 根據89題格雷碼可以得知二進位制與格雷碼之間有這樣的規律 假設格雷碼第n位為g n 二進位制第n位為b n 對於n 1位,g n 1 b n 1 g n 1 b n 1 g n 1 b n 1 g n b n 1 xorb n g n b ...
C語言實現迴圈碼系統與非系統編碼
迴圈碼系統與非系統編碼的c語言實現 include stdio.h include define n10 系統編碼實現 void x int g n int c n int r,int n c n r n a n 2 n q n degg r 求資訊多項式的次冪 for i 0 i n r 1 i ...
關於迴圈冗餘碼
關於迴圈冗餘碼具體是幹嘛的,舉個例子就可明白。你要給遠在他鄉的好友送禮物,假設路上艱險重重,你怎麼保證你的好友收到的禮物一定是你給他傳送的原品呢?這時你想到了乙個辦法,在禮物中額外加點東西,針對這個新的禮物設計一種規則,使得你的好友用這套規則開啟禮物後呈現你倆約定好的模樣,如果能夠實現那麼就是原品,...