帮我写一个关于1到n的全排列
时间: 2023-05-25 22:03:05 浏览: 74
全排列指将一个集合中的所有元素按照不同的顺序进行排列组合,其中每种组合方式都只会出现一次,不会出现相同的排列。
对于1到n的全排列,我们可以使用递归法进行求解。
首先,我们考虑1个元素的情况。此时,只有一个元素,它的全排列就是它本身。
当有2个元素时,我们可以将第一个元素与第二个元素交换位置,得到两种不同的排列。即(1, 2)和(2, 1)。这两个排列只有顺序不同,不是两个独立的排列。
对于包含n个元素的集合,它的全排列可以通过以下方式求解:
1. 将第一个元素与其他元素依次交换位置,得到n种排列。
2. 对于每种排列,将第一个元素固定,对剩下的n-1个元素进行全排列。
以上两个步骤可以通过递归的方式实现。最终得到的所有排列就是1到n的全排列。
下面是Python代码实现:
```
def permutation(nums):
if len(nums) == 1:
return [nums]
res = []
for i in range(len(nums)):
for j in permutation(nums[:i]+nums[i+1:]):
res.append([nums[i]]+j)
return res
# 示例:打印1到n的全排列
n = 3
for p in permutation(list(range(1, n+1))):
print(p)
```
输出结果如下:
```
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
```