python非遞迴全排列

2022-07-16 08:27:11 字數 970 閱讀 7806

剛剛開始學習python,按照廖雪峰的**看的,當前看到了函式這一節。結合陣列操作,寫了個非遞迴的全排列生成。原理是插入法,也就是在乙個有n個元素的已有排列中,後加入的元素,依次在前,中,後的每乙個位置插入,生成n+1個新的全排列。因為python切割陣列或者字串,以及合併比較方便,所以,程式會節省很多**。

1

defgetarrayinsertchartostr(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 從...