Let's say we have a list: ['a','b','c','d']
The output must be:
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
.....
诸若此类.
如果我知道列表中元素的数量,我就可以编写程序, 但该列表是由用户提供的(考虑到用户提供了一个唯一元素的列表).
l = ['a', 'b', 'c', 'd']
for h in l:
for i in l:
ll = [h+i+j+k for j in l for k in l if len([h,i,j,k])==len(set([h,i,j,k]))]
for m in ll:
print(m)
这个程序给了我上面的输出.
如果我想要3个元素,我可以删除一个for
循环,或者如果我想要5个元素,我可以添加一个for
循环,
但程序必须在运行时考虑元素的数量并提供输出.
基本上,我正在寻找一个通用的算法,可以处理任何数量的元素.
我认为递归是一种方法,但不知道怎么做. 也尽量做到了不用itertools排列的方法.
任何帮助都将不胜感激.