设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。任意输入一串整数或字符,输出结果能够用递归方法实现整数或字符的全排列。
时间: 2024-09-21 18:11:17 浏览: 81
Java全排列算法字典序下的下一个排列讲解
设计一个递归算法生成n个元素`{r1, r2, ..., rn}`的全排列可以使用回溯法,也称为深度优先搜索(DFS)。以下是Python的一个示例:
```python
def generate_permutations(arr, n):
# 基线条件:如果只剩下一个元素,就直接返回这个元素组成的数组
if n == 1:
return [arr]
# 对于每个当前元素,尝试将其与其他剩余元素交换位置,然后递归处理剩下的n-1个元素
result = []
for i in range(n):
# 生成新的数组,将当前元素移到第一位
new_arr = arr.copy()
new_arr[0], new_arr[i] = new_arr[i], new_arr[0]
# 递归生成剩余元素的所有排列,并添加当前元素到每一项前面
for perm in generate_permutations(new_arr[1:], n - 1):
result.append([arr[0]] + perm)
return result
# 测试函数
input_list = [1, 2, 3] # 输入整数列表,也可以替换为字符串或其他类型
permutations = generate_permutations(input_list, len(input_list))
print("所有排列:", permutations)
阅读全文