我在網上回答了一些編程問題,這個問題讓我感興趣。問題是定義如下:使用Bitmasking生成排列
這個代碼打印出所有字符串的字典順序排列。它有什麼問題。通過修改或添加一行來查找並修復它!
輸入:
輸入由含有的小寫字符的字符串與在之間沒有空格的單一生產線。其長度最多爲7個字符,其字符按字典順序排序。
輸出:
印刷一個在每行中的字符串,字典順序列出的所有排列。
def permutations():
global running
global characters
global bitmask
if len(running) == len(characters):
print(''.join(running))
else:
for i in xrange(len(characters)):
if ((bitmask>>i)&1) == 0:
bitmask |= 1<<i
running.append(characters[i])
permutations()
running.pop()
raw = raw_input()
characters = list(raw)
running = []
bitmask = 0
permutations()
有人可以爲我回答並解釋它是如何工作的嗎?我對bitmasking的應用並不熟悉。謝謝。
感謝您的回覆。不過,我仍然感到困惑。是循環內的if語句的目的是爲了追蹤哪些字符必須被添加? – kalev25 2014-11-22 08:18:31
@ kalev25解釋添加了一個例子。 – 2014-11-22 08:32:48