我有一个列表,可以包含3到10个元素,我需要能够打印出这些元素的所有排列。
我遇到的问题是Jython似乎没有任何python或java方法(没有perm()没有产生等)所以我不得不依赖于使用循环。
我已经完成了以下工作:
对于3个元素我做了以下3次,并给出了所有选项
list.pop(elements-2) /n list.append
list.pop(elements-3) /n list.append
print
list.pop(elements-2) /n list.append
list.amend
print
4个元素我做了3次然后我必须做
list.pop(elements-4) /n list.append
然后前一个循环3次然后pop(elements-4)
。这样做了4次。
对于5个元素,我必须在每个循环之后用pop(elements-5)
进行5次4次循环,依此类推,但是我无法概念化如何将这一切都很好。
任何帮助都会很棒,因为我似乎无法将任何java / python解决方案弯曲成正确的形状。
确定。经过一些研究和演奏后,我想出了以下代码:
def findPerms():
myList = [9,2,3,6]
allPerms=[]
elementCount = 0
for i in myList:
elementCount+= 1
for i in range(0,elementCount):
for j in range(1,elementCount):
perm=[]
for k in range(0,elementCount):
perm.append(myList[k])
if allPerms.count(perm) == 0:
print perm
allPerms.append(perm)
h = myList[j]
myList[j]=myList[j-1]
myList[j-1] = h
它适用于3个元素,但只有12个perms用于4个元素,20个用于5个元素,因此对于e> 3它是一个因子e
有什么想法吗?