python 排列组合序列

题目描述】

用户输入整数n(1<=n<=26)和整数m(m<=n),然后输入n个不同的字母,请编写程序输出在这n个字母中选择m个字母的所有排列序列和组合序列。

【源代码程序】

def permutations(letters, m, prefix=[]):

 

    if m == 0:

 

        print(''.join(prefix))

 

        return

 

    for i in range(len(letters)):

 

        permutations(letters[:i] +

letters[i + 1:], m - 1, prefix + [letters[i]])

 

 

 

 

 

def combinations(letters, m, start=0, prefix=[]):

 

    if m == 0:

 

        print(''.join(prefix))

 

        return

 

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

 

        combinations(letters, m - 1, i + 1,

prefix + [letters[i]])

 

 

 

 

 

n = int(input("请输入字母个数n(1<=n<=26):"))

 

m = int(input("请输入选择的字母个数m(m<=n):"))

 

 

 

letters = []

 

for i in range(n):

 

    letter = input("请输入第{}个字母:".format(i + 1))

 

    letters.append(letter)

 

 

 

 

 

# 调用函数生成排列和组合序列

 

print("排列序列:")

 

permutations(letters, m)

 

print("\n组合序列:")

 

combinations(letters, m)

 

【运行测试

 

 

posted on 2024-06-03 17:56  Daniel350  阅读(3)  评论(0编辑  收藏  举报