剛剛開始學習python,按照廖雪峰的**看的,當前看到了函式這一節。結合陣列操作,寫了個非遞迴的全排列生成。原理是插入法,也就是在乙個有n個元素的已有排列中,後加入的元素,依次在前,中,後的每乙個位置插入,生成n+1個新的全排列。因為python切割陣列或者字串,以及合併比較方便,所以,程式會節省很多**。
1defgetarrayinsertchartostr(str,char):
2 arr =
3 s_len =len(str)
4 index =0
5while index <=s_len:6#
分割字串
8 index = index + 1
9return
arr
1011
defgetarrayinsertchartoarray(array,char):
12 index =0
13 re_array =
14while index 15 re_array = re_array +getarrayinsertchartostr(array[index],char)
16 index = index + 1
17return
re_array
1819
defgetpermutation(str):
20 resultarr =[str[0]]
21for item in str[1:]:
22 resultarr =getarrayinsertchartoarray(resultarr,item)
23return
resultarr
2425
26print(getpermutation('
abc'))
全排列 非遞迴
description 列出所有數字1到數字n的連續自然數的排列,要求所產生的任一數字序列中不允許出現得復數字。input 輸入 n 1 n 9 output 由1 n組成的所有不重複的數字序列,每行乙個序列。sample input 3 sample output 1 2 3 1 3 2 2 1 ...
全排列遞迴與非遞迴python實現
全排列就是,給定乙個序列,列舉出該序列中元素所有的排列情況,列舉方法有遞迴和非遞迴兩種,詳細可以見這位大神寫的部落格 我只列出來兩個重要的圖吧。1.非遞迴 字典序法 如下圖 1,2,3 的例子 2.遞迴方法 遞迴方法就是將序列中第一位固定,然後將後面n 1為的全排列列舉出來,取遍第一位所有取值,遞迴...
Python 非遞迴方法的全排列
pythonalgorithm 排列 英語 permutation 是將相異物件或符號根據確定的順序重排。每個順序都稱作乙個排列。例如,從一到六的數字有720種排列,對應於由這些數字組成的所有不重複亦不闕漏的序列,例如4,5,6,1,2,3 與1,3,5,2,4,6。from wikipedia 從...