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
        


      
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值