【发布时间】:2015-01-20 09:11:58
【问题描述】:
我在网上回答了一些编程问题,这个问题让我很感兴趣。问题定义如下:
此代码按字典顺序打印字符串的所有排列。它有问题。通过修改或添加一行来查找并修复它!
输入:
输入由一行组成,其中包含一串小写字符,中间没有空格。它的长度最多为 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()
有人可以为我回答并解释它是如何工作的吗?我对位掩码的应用并不熟悉。谢谢。
【问题讨论】:
标签: python algorithm permutation bitmask lexicographic