需要帮助在Jython中生成所有排列

时间:2014-01-22 01:47:50

标签: algorithm list loops jython permutation

我有一个列表,可以包含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

有什么想法吗?

0 个答案:

没有答案