python非遞迴全排列實現方法

2022-10-03 09:27:14 字數 916 閱讀 2500

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

def getarrayinsertchartostr(str,char):

arr =

s_len = len(str)

index =0

while index <= s_len:

#分割字串

arr.append(str[:index]+char+str[index:s_len])

index = index + 1

return arr

def getarrayinsertchartoarray(array,char):

index = 0

re_array =

while index < len(array程式設計客棧):

re_array = re_array + gecsijxtarrayinsertchartostr(array[index],char)

index = index + 1

return re_array

def getpermutation(str):

resultarr = [str程式設計客棧[0]]

for item in str[1:]:

rescsijxultarr = getarrayinsertchartoarray(resultarr,item)csijx

return resultarr

print(getpermutation('abc'))

本文標題: python非遞迴全排列實現方法

本文位址:

全排列遞迴與非遞迴python實現

全排列就是,給定乙個序列,列舉出該序列中元素所有的排列情況,列舉方法有遞迴和非遞迴兩種,詳細可以見這位大神寫的部落格 我只列出來兩個重要的圖吧。1.非遞迴 字典序法 如下圖 1,2,3 的例子 2.遞迴方法 遞迴方法就是將序列中第一位固定,然後將後面n 1為的全排列列舉出來,取遍第一位所有取值,遞迴...

非遞迴全排列實現

include include include include include include include includeusing namespace std const int max size 1000 尋找下乙個排列 假設 某個序列為 d1 d2 d3 dn 那麼在dn前找第乙個 比dn...

非遞迴實現全排列

要求 使用非遞迴的方法按照字典序輸出全排列 思路 這次以 1 5 4 3 2 為例,下乙個排列是 2 1 3 4 5 從後往前找,找到第乙個連續遞增的兩個數字,找到了 1 5 重新從後往前找,找到第乙個大於 1 的數字,找到了 2 1 就是步驟三中找到的第乙個數字 找到 2 之後,將 1 和 2 互...