I'm trying to permute vector using recursion, but this produce segmentation fault(core dump),what is wrong with the code? the idea is using backtracking, delete and choose string to add to vector, recur, and backtrack
#include <bits/stdc++.h>
#include <vector>
using namespace std;
// Function to print permutations of string
// This function takes three parameters:
// 1. String
// 2. vector to store string permutation
// 3. dummy vector to store each permutation
vector<vector<int> > permute(vector<int> nums, vector<vector<int> >& k, vector<int> li)
{
if (nums.empty()) {
k.push_back(li);
}
else {
for (int i = 0; i < nums.size(); i++) {
int chos = nums[i];
li.push_back(chos);
nums.erase(nums.begin() + i);
permute(nums, k, li);
nums.insert(nums.begin() + i, chos);
li.erase(li.end()-1);
}
}
return k;
}
// Driver Code
int main()
{
vector<int> permut = { 1, 2, 3 };
vector<vector<int> > k;
vector<int> li;
k = permute(permut, k, li);
return 0;
}