DP 生成Gray碼序列

2021-10-07 22:58:07 字數 1025 閱讀 8610

格雷碼是一種二進位制編碼系統,如果任意兩個相鄰的**只有一位二進位制數不同,則稱這種編碼為格雷碼(gray code)。

給定乙個非負整數n,表示**的位數,列印格雷碼的序列。格雷碼序列必須以0開頭。

例如:給定n=2,返回[0,1,3,2]. 格雷碼的序列為:

00 - 0↵01 - 1↵11 - 3↵10 - 2

注意:對於乙個給定的n,格雷碼的序列不一定是唯一的,

例如:根據題目描述,[0,2,3,1]也是乙個有效的格雷碼序列

遞迴寫法:

class

solution

:def

graycode

(self , n )

:# write code here

res=

if n==0:

return[0

]else

: t=

1<<

(n-1

)#2**(n-1)

"""for i in self.graycode(n-1)[-1::-1]:

res=

[t+(

1<<

(n-1))

for t in self.graycode(n-1)

[-1:

:-1]

]return self.graycode(n-1)

+res

迴圈寫法:

def

g2(n)

: res=

for i in

range(1

,n+1):

if i==1:

res=[0

,1]else

: res_t=

[t+(

1<<

(i-1))

for t in res[::

-1]]

res=res+res_t

print

(res)

Gray碼 格雷碼 二進位制

以下內容是看了matrix67的關於二進位制的blog link 的一點總結與摘錄。gray碼,中文 格雷碼 是一種特殊的編碼,相鄰兩個格雷碼的二進位制表示中有且僅有一位不同,且 n 階 gray 碼是 0 2 n 1 的乙個排列。n 階 gray 碼可以由 n 1 階 gray 碼映象翻轉之後最前...

LeetCode 格雷碼序列的生成

問題概述 在一組數的編碼中,若隨意兩個相鄰的 僅僅有一位二進位制數不同。則稱這樣的編碼為格雷碼。2位數的格雷碼序列 00 0 01 1 11 3 10 2 找規律 假設要求n位的格雷碼,先要求出n 1位的格雷碼。迴圈上一次格雷碼的每一位,都會生成兩個新的格雷碼 統計 1 出現的次數 假設為偶數 兩個...

序列生成 RNN對抗序列生成

摘要 證明了文字的對抗樣本可以干擾rnn的分類結果。介紹 兩種方法 the fast gradient sign method the forward derivative method 主要貢獻 形式化對抗樣本優化問題 將對抗擾動加到其他輸入中 評估了文字對抗樣本表現 2.關於迴圈神經網路 機器學...