一个整数n 1<=n<=5 output 输出n个数的有重复全排列
时间: 2023-10-02 19:02:37 浏览: 124
对于一个整数n(1≤n≤5),要输出n个数的有重复全排列,可以使用递归的方法来实现。
首先,我们定义一个函数permutation,该函数有三个参数:input_list为输入的数字列表,used为记录数字是否已被使用的列表,result为当前已生成的排列结果。函数的作用是生成n个数的有重复全排列。
在函数内部,首先判断是否已经生成了n个数的排列。如果已经生成了,则将排列结果添加到最终结果列表中,然后返回。
如果还没有生成n个数的排列,则遍历输入的数字列表。对于每一个数字,判断该数字是否已被使用。如果已被使用,则跳过该数字,继续遍历下一个数字。如果该数字还没有被使用,则将该数字添加到排列结果中,将该数字标记为已使用,然后递归调用permutation函数,继续生成下一个数字的排列。递归调用结束后,需要将排列结果和使用标记恢复到之前的状态,以便进行下一次循环。
最后,定义一个最终结果列表,将函数permutation的结果添加到其中,然后输出最终结果。
以下是示例代码:
def permutation(input_list, used, result):
if len(result) == len(input_list):
results.append(result[:])
return
for i in range(len(input_list)):
if used[i]:
continue
result.append(input_list[i])
used[i] = True
permutation(input_list, used, result)
result.pop()
used[i] = False
n = int(input("请输入一个整数n:"))
input_list = [i for i in range(1, n+1)]
used = [False] * n
results = []
permutation(input_list, used, [])
print("输出结果:")
for result in results:
print(result)
运行示例代码,当输入n为3时,输出结果如下:
输出结果:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
这些就是3个数的有重复全排列的结果。
阅读全文