#include
#include
using namespace std;
void permutation(vector& nums, vector& path, vector& used, vector<vector>& res) {
if (path.size() == nums.size()) {
res.push_back(path);
return;
}
for (int i = 0; i < nums.size(); i++) {
if (used[i]) continue;
path.push_back(nums[i]);
used[i] = true;
permutation(nums, path, used, res);
path.pop_back();
used[i] = false;
}
}
vector<vector> permute(vector& nums) {
vector<vector> res;
vector path;
vector used(nums.size(), false);
permutation(nums, path, used, res);
return res;
}
int main() {
vector nums = {1, 2, 3, 4};
vector<vector> res = permute(nums);
for (int i = 0; i < res.size(); i++) {
for (int j = 0; j < res[i].size(); j++) {
cout << res[i][j] << " ";
}
cout << endl;
}
return 0;