. 计算n个数的全排列,输入n,输出1,2,3,...n的全排列,利用分治法实现。
时间: 2024-05-10 17:14:43 浏览: 9
以下是利用分治法实现计算n个数的全排列的Python代码:
```python
def permute(nums):
if len(nums) == 0:
return []
if len(nums) == 1:
return [nums]
result = []
for i in range(len(nums)):
rest = nums[:i] + nums[i+1:]
for perm in permute(rest):
result.append([nums[i]] + perm)
return result
n = int(input("请输入n: "))
nums = [i for i in range(1, n+1)]
result = permute(nums)
for r in result:
print(r)
```
首先,我们定义了一个名为permute的函数,用于计算给定列表的全排列。如果列表为空,则返回空列表。如果列表只有一个元素,则返回包含该元素的列表。否则,我们迭代列表中的每个元素,并递归地计算剩余元素的全排列。最后,我们将每个元素与其余元素的全排列组合起来,并将结果添加到结果列表中。
接下来,我们接受用户输入n,生成包含1到n的整数列表,并调用permute函数计算该列表的全排列。最后,我们迭代结果列表,并打印每个排列。
以上代码可以计算1到10的整数的全排列,但对于更大的n,计算时间可能会非常长。因此,这种方法适用于小规模的排列问题。