1.题目描述
有一个含n个整数的数组a,所有元素均不相同,求其所有元素的全排列
例如,a[]={1,2,3},得到结果是(1,2,3)、(1,3,2)、(2,3,1)、(2,1,3)、(3,1,2)、(3,2,1)
2. 解题思路
3. 算法思路图
#include <bits/stdc++.h>
using namespace std;
void swap(int &x, int &y) {
int temp = x;
x = y;
y = temp;
}
void dispsolution(int a[], int n) {
cout << "{";
for(int i = 0; i < n; i++)
cout << a[i];
cout << "}";
}
void dfs(int a[], int n, int i) {
if(i >= n)
dispsolution(a, n);
else {
for(int j = i; j < n; j++) {
swap(a[i], a[j]);
dfs(a, n, i + 1);
swap(a[i], a[j]);
}
}
}
int main() {
int a[] = {1, 2,3};
int n = sizeof(a) /sizeof(a[0]);
cout << "全排列为";
dfs(a, n, 0);
return 0;
}