題1: 對乙個字串如s="abcd"裡的元素進行全排列。
def r(s, start,end):
if start >= end:
print(s)
else:
for i in range(start,end):
s[start],s[i] = s[i],s[start]
r(s, start+1, end)
s[start], s[i] = s[i], s[start]
s="abcd"
r(list(s),0,len(s))
輸出結果:
['a', 'b', 'c', 'd']
['a', 'b', 'd', 'c']
['a', 'c', 'b', 'd']
['a', 'c', 'd', 'b']
['a', 'd', 'c', 'b']
['a', 'd', 'b', 'c']
['b', 'a', 'c', 'd']
['b', 'a', 'd', 'c']
['b', 'c', 'a', 'd']
['b', 'c', 'd', 'a']
['b', 'd', 'c', 'a']
['b', 'd', 'a', 'c']
['c', 'b', 'a', 'd']
['c', 'b', 'd', 'a']
['c', 'a', 'b', 'd']
['c', 'a', 'd', 'b']
['c', 'd', 'a', 'b']
['c', 'd', 'b', 'a']
['d', 'b', 'c', 'a']
['d', 'b', 'a', 'c']
['d', 'c', 'b', 'a']
['d', 'c', 'a', 'b']
['d', 'a', 'c', 'b']
['d', 'a', 'b', 'c']
全排列結果數:
題2:排列:從n個元素中任取m個元素,並按照一定的順序進行排列,稱為排列;
全排列:當n==m時,稱為全排列;
比如:集合的全排列為:
遞迴思想:
取出陣列中第乙個元素放到最後,即a[1]與a[n]交換,然後遞迴求a[n-1]的全排列
1)如果陣列只有乙個元素n=1,a= 則全排列就是
2)如果陣列有兩個元素n=2,a= 則全排列是:
--a[1]與a[2]交換。交換後求a[2-1]=的全排列,歸結到1)
--a[2]與a[2]交換。交換後求a[2-1]=的全排列,歸結到1)
3)如果陣列有三個元素n=3,a= 則全排列是
,1}--a[1]與a[3]交換。後求a[3-1]=的全排列,歸結到2)
,2)--a[2]與a[3]交換。後求a[3-1]=的全排列,歸結到2)
,3)--a[3]與a[3]交換。後求a[3-1]=的全排列,歸結到2)
...依此類推。
利用python實現全排列的具體**perm.py如下:
[python] view plain
copy
count=0
defperm(n,begin,end):
globalcount
ifbegin>=end:
printn
count +=1
else:
i=begin
fornuminrange(begin,end):
n[num],n[i]=n[i],n[num]
perm(n,begin+1,end)
n[num],n[i]=n[i],n[num]
n=[1,2,3,4]
perm(n,0,len(n))
printcount
最後輸出的結果如下:
[plain] view plain
copy
********************==== restart: d:/python27/perm.py ********************====
[1, 2, 3, 4]
[1, 2, 4, 3]
[1, 3, 2, 4]
[1, 3, 4, 2]
[1, 4, 3, 2]
[1, 4, 2, 3]
[2, 1, 3, 4]
[2, 1, 4, 3]
[2, 3, 1, 4]
[2, 3, 4, 1]
[2, 4, 3, 1]
[2, 4, 1, 3]
[3, 2, 1, 4]
[3, 2, 4, 1]
[3, 1, 2, 4]
[3, 1, 4, 2]
[3, 4, 1, 2]
[3, 4, 2, 1]
[4, 2, 3, 1]
[4, 2, 1, 3]
[4, 3, 2, 1]
[4, 3, 1, 2]
[4, 1, 3, 2]
[4, 1, 2, 3]
24
>>>
遞迴實現全排列python
1.保持a不動,動bcd 2.保持b不動,動cd 3.保持c不動,動d def pailie head string if len string 1 for father string in string pailie head father string,string.replace father...
使用Python遞迴實現全排列
1 確定兩個列表 2 乙個列表是用來存放需要全排列的數 3 另乙個列表是用來存放已經排列好的數 4 將上面兩個列表不斷進行遞迴 5 最後結果列表裡新增的是最後排列好的列表 import math import copy 定義全排列的函式 defpermutation need perm,alread...
python遞迴全排列實現方法
排列 從n個元素中任取m個元素,並按照一定的順序進行排列,稱為排列 全排列 當n m時,稱為全排列 比如 集合的全排列為 www.cppcns.com 遞迴思想 取出陣列中第乙個元素放到最後,即a 1 與a n 交換,然後遞迴求a n 1 的全排列 1 如果陣列只有乙個元素n 1,a 則全排列就是 ...