对于每个n,输出1到n的全排列 按字典序输出全排列 每个排列一行 相邻两个数字之间隔一个空格
时间: 2024-03-07 17:49:04 浏览: 75
好的,这个问题可以使用递归来解决。以下是一个基于递归的 Python 代码,可以解决您的问题:
```python
def permute(nums):
# 递归终止条件
if len(nums) == 1:
return [nums]
result = []
# 对于每个数字,将其与其他数字交换位置
for i in range(len(nums)):
# 将第一个位置与后面的位置逐一交换
nums[0], nums[i] = nums[i], nums[0]
# 递归调用,获取剩余数字的全排列
sub_permutes = permute(nums[1:])
# 将当前数字和其余数字的全排列组合
for sub_permute in sub_permutes:
result.append([nums[0]] + sub_permute)
return result
n = int(input())
nums = list(range(1, n + 1))
permutes = permute(nums)
for permute in permutes:
print(' '.join(map(str, permute)))
```
这个代码基于递归实现了全排列,将数字列表中的每个数字依次和其他数字交换位置,然后获取剩余数字的全排列,最后将当前数字和其余数字的全排列组合,得到所有的全排列。最后按字典序输出所有的全排列,每个排列一行,相邻两个数字之间隔一个空格。
阅读全文