1. 程式人生 > >Python,實現全排列的列印

Python,實現全排列的列印

問題:輸入一個數字:3,列印它的全排列組合:123 132 213 231 312 321,並進行統計個數。

下面是Python的實現程式碼:

#!/usr/bin/env python
# -*- coding: <encoding name> -*- 
'''
全排列的demo
input : 3
output:123 132 213 231 312 321
'''

total = 0

def permutationCove(startIndex, n, numList):
    '''遞迴實現交換其中的兩個。一直迴圈下去,直至startIndex == n
    '''
    global total
    if startIndex >= n:
        total += 1
        print numList
        return
        
    for item in range(startIndex, n):
        numList[startIndex], numList[item] = numList[item], numList[startIndex]
        permutationCove(startIndex + 1, n, numList )
        numList[startIndex], numList[item] = numList[item], numList[startIndex]
      
      
      
  
n = int(raw_input("please input your number:"))
startIndex = 0
total = 0
numList = [x for x in range(1,n+1)]
print '*' * 20
for item in range(0, n):
    numList[startIndex], numList[item] = numList[item], numList[startIndex]
    permutationCove(startIndex + 1, n, numList)
    numList[startIndex], numList[item] = numList[item], numList[startIndex]

print total