class Solution {
public:
vector<vector<int>> rr;
vector<int> res;
vector<int> vis;
void dfs(vector<int>& nums) {
if (res.size() == nums.size()) {
rr.push_back(res);
return;
}
for (int i = 0; i < nums.size();++i) {
if (!vis[i]) {
vis[i] = 1;
res.push_back(nums[i]);
dfs(nums);
res.pop_back();
vis[i] = 0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
// res.resize(nums.size());
// vector<int> vis;
// vector<int> res;
vis.resize(nums.size());
fill(vis.begin(),vis.end(),0);
for (int i = 0; i < nums.size(); ++i) {
if (!vis[i]) {
res.push_back(nums[i]);
vis[i]=1;
dfs(nums);
res.pop_back();
vis[i] = 0;
}
}
return rr;
}
};
实际上可以使用STL的全排列函数 next_permutation
next_permutation文章 链接