用遞迴求字串的全組合

2021-08-31 01:42:27 字數 646 閱讀 4192

對於乙個給定的序列 a = [a1, a2, a3, … , an],請設計乙個演算法,用於輸出這個序列的全部排列方式。

例如:a = [1, 2, 3]

則輸出為:

[1, 2, 3]

[1, 3, 2]

[2, 1, 3]

[2, 3, 1]

[3, 2, 1]

[3, 1, 2]

如果對於無重複元素的序列,可以用如下方法遞迴實現:

def func(list, start):

if start == len(list) - 1:

print list

for i in range(start, len(list)):

list[i], list[start] = list[start], list[i]

func(list, start + 1)

list[i], list[start] = list[start], list[i]

def main2():

list = [1, 2, 3]

func(list, 0)

if __name__ == '__main__':

main2()

字串的全組合非遞迴實現

include include include include using namespace std int main while 1 string str cin str vectorcurrent int size str.size 1 while 1 int last size curren...

求字串的所有組合

問題 求乙個字串的所有組合。解答 題意很清楚,是求乙個字串的所有組合,屬於中學數學知識的範疇,如給定字串str abc 則他的所有組合有 a b c ab ac bc abc。交換兩個字元時雖然能得到兩個不同的排列,但是卻屬於同乙個組合,比如ab和ba是不同的排列,但是只能算乙個組合。include...

全組合的遞迴實現C

今天刷題碰到乙個要用到全組合的問題,下面的 是用遞迴寫的,留著以後複習一下 includeusing namespace std void full combine int data,int cur,int len if cur len for int i 0 i這是一種間接的方式,程式輸出的都是0...