输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。 输入格式: 一个自然数 n(1≤n≤9) 输出格式: 由 1∼n 组成的所有不重复的数字序列,每行一个序列,数字之间用一个空格隔开。
时间: 2024-11-28 18:13:32 浏览: 21
回溯法 - 输出自然数1到n所有不重复的排列,即n的全排列
输出 n 的全排列是一个经典的回溯算法问题。当你需要生成所有可能的不同顺序组合,且每个数字只能使用一次时,可以采用递归的方式来解决。以下是 Python 中的一个示例:
```python
def permute(n):
def backtrack(first=1):
if first == n + 1: # 当前已使用所有数字,添加到结果列表
result.append(' '.join(map(str, arr)))
else:
for i in range(first, n + 1): # 从第一个未使用的数字开始尝试
arr[first] = i # 将i放入当前位置
backtrack(first + 1) # 遍历下一个位置
arr[first] = -1 # 回溯:将i移除当前位置
arr = [-1] * (n + 1)
result = []
backtrack()
return result
# 示例
n = int(input("请输入一个自然数 (1 <= n <= 9): "))
permutations = permute(n)
for permutation in permutations:
print(permutation)
阅读全文