#include <iostream>
#include <vector>
#include <algorithm>
vector<vector<int>> res;
vector<int> p;
void generatePermutation(const vector<int>& array, int index, vector<int>& p)
{
if ( index == array.size()) {
res.push_back(p);
return;
}
for (int i = 0; i < array.size(); i++)
{
if (find(p.begin(), p.end(), array[i]) == p.end()) { //p中没有此元素。
p.push_back(array[i]);
generatePermutation(array, index + 1, p);
p.pop_back();
}
}
}
vector<vector<int>> permute(const vector<int>& array)
{
if (array.size() == 0)
return res;
else {
generatePermutation(array, 0, p);
return res;
}
}
int main()
{
vector<vector<int>> permutation = permute({ 1,2,3,4 });
for (int i = 0; i < permutation.size(); i++)
{
for (int j = 0; j < permutation[0].size(); j++)
cout << permutation[i][j] << " ";
cout << endl;
}
}