从键盘读入n个整数(每个数都是1~9之间的数),输出这n个整数的全排列(数字不能重复)。
时间: 2024-04-30 11:20:27 浏览: 126
C语言程序设计-编写程序。从键盘读入8个整数存入数组a中并输出这8个数据。和、最大值、最小值及平均值。正数之和、负数之和
5星 · 资源好评率100%
这个问题可以使用递归来解决。我们可以将问题分解为两个部分:
1. 选取一个数字作为排列的第一个数字。
2. 对于剩余的数字进行全排列,然后将第一步选取的数字与全排列的结果进行组合。
具体实现见下方代码:
```python
def permute(nums):
res = []
def backtrack(nums, path):
if not nums:
res.append(path)
return
for i in range(len(nums)):
backtrack(nums[:i]+nums[i+1:], path+[nums[i]])
backtrack(nums, [])
return res
n = int(input())
nums = list(range(1, 10))[:n]
res = permute(nums)
for r in res:
print(' '.join(str(x) for x in r))
```
输入样例:
```
3
```
输出样例:
```
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
```
阅读全文