python 一個數列[n1, n2, n3.........],其中n個數的全排列個數

def free_combination(list1, m):    # 遞歸函數    global sum, list2      # 全局變量    if m == 1:      # 遞歸出口        for i, element in enumerate(list1):            # enumerate()函數:返回下標(索引)和值            if i in list2:                # 由於已經加入組合的數字不能重複加入,因此跳出循環                continue            list2.append(i)         # 未使用的數字能夠加入組合            if n == len(list2):     # 若是組合的長度符合要求,則符合規則的組合數量+1                sum += 1                for j in list2:     # 打印                    print(list1[j], end='\t')            list2.pop()     # 刪除最後一個元素。 (pop()返回刪除的值,咱們這裏用不到)            print()     # 換行        return 0    else:        for i, element in enumerate(list1):            if i in list2:                # 由於已經加入組合的數字不能重複加入,因此跳出循環                continue            list2.append(i)     # 未使用的數字能夠加入組合            free_combination(list1, m - 1)  # 遞歸調用            list2.pop()     # 刪除最後一個元素。 (pop()返回刪除的值,咱們這裏用不到)list1 = eval(input('請輸入自由組合的序列(形如[1, 2, 3,...]):'))n = int(input('請輸入自由組合的長度:'))m = nsum = 0list2 = list()      # 創建一個空列表,存儲已經加入組合的下標值free_combination(list1, m)print(f'{list1}{n}個數的排列共有{sum}種排列組合')
相關文章
相關標籤/搜索