對於乙個給定的序列 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...