增補部落格 第十六篇 python 排列組合序列

财神给你送元宝發表於2024-06-14

【題目描述】使用者輸入整數n(1<=n<=26)和整數m(m<=n),然後輸入n個不同的字母,請編寫程式輸出在這n個字母中選擇m個字母的所有排列序列和組合序列。
【練習要求】請給出原始碼程式和執行測試結果,原始碼程式要求新增必要的註釋。
【輸入格式】在第一行中輸入整數n和整數m的值,資料之間以空格為間隔。
在第二行中輸入n個不同字母,資料之間以空格為間隔
【輸出格式】首先輸出所有的排列數列,每種情況一行,字母間以空格為間隔;
再者首先輸出所有的組合數列,每種情況一行,在同一行中以字母增序順序顯示,字母間以空格為間隔。
【輸入樣例】3 2
a s d
【輸出樣例】Permutation:
a d
d a
a s
s a
d s
s d
Combination:
a d
a s
d s

import itertools

n = int(input("請輸入一個整數 n(1<=n<=26): "))
m = int(input("請輸入一個整數 m(m<=n): "))

letters = input("請輸入n個不同的字母,用空格分隔: ").split()

permutations = list(itertools.permutations(letters, m))
combinations = list(itertools.combinations(letters, m))

print(f"選擇 {m} 個字母的所有排列序列:")
for perm in permutations:
    print(''.join(perm))

print(f"選擇 {m} 個字母的所有組合序列:")
for comb in combinations:
    print(' '.join(comb))

  

相關文章