问题描述
给定一个集合(a1,a2,a3,…,an),求该集合的所有排列。如集合(1,2,3)的所有排列为(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)。
思路
可以发现,得到集合全排列的思想为求a1+(a2,a3,…,an)的全排列,而a1可以与集合中的n个元素进行交换,同理,(a2,a3,…,an)的全排列等于a2+(a3,a4,…,an)的全排列,以此类推,可以写出递归算法
代码
#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 1000;
void swap(int &a,