class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
vector<vector<int>> ans;
dfs(ans,nums,0);
return ans;
}
void dfs(vector<vector<int>> &res,vector<int> num, int k){
if(k == num.size()) {
res.push_back(num);
return;
}else{
for(int i = k;i<num.size();++i){
swap(num[i],num[k]);
dfs(res,num,k+1);
swap(num[i],num[k]);
}
}
}
};