语言:python
1. 字符可重复
def perm(items, n=None):
if n is None:
n = 2
for i in range(len(items)):
v = items[i:i+1]
if n == 1:
yield v
else:
rest = items[:]
for p in perm(rest, n-1):
yield v + p
for i in perm("abcdef"):
print i,
输出结果为:
aa ab ac ad ae af ba bb bc bd be bf ca cb cc cd ce cf da db dc dd de df ea eb ec ed ee ef fa fb fc fd fe ff
2.字符不可重复
def perm(items, n=None):
if n is None:
n = 2
for i in range(len(items)):
v = items[i:i+1]
if n == 1:
yield v
else:
rest = items[:i] + items[i+1:]
for p in perm(rest, n-1):
yield v + p
for i in perm("abcdef"):
print i,
输出结果为:
ab ac ad ae af ba bc bd be bf ca cb cd ce cf da db dc de df ea eb ec ed ef fa fb fc fd fe
3.输出全排列
def perm(items, n=None):
if n is None:
n = len(items)
for i in range(len(items)):
v = items[i:i+1]
if n == 1:
yield v
else:
rest = items[:i] + items[i+1:]
for p in perm(rest, n-1):
yield v + p
for i in perm("abc"):
print i,
输出结果:
abc acb bac bca cab cba
本文介绍了一个使用Python实现的排列组合生成器,该生成器能够处理字符可重复、不可重复及全排列的情况,并通过示例代码展示了不同场景下的输出结果。

3301

被折叠的 条评论
为什么被折叠?



