思想:
注意这里给定的序列不包含重复的元素。
方法一:DFS
class Solution {
public:
//Permutations
void dfs(vector<vector<int>> &res, vector<int> num, vector<int> &path) {
if(path.size() == num.size()) {
res.push_back(path);
return;
}
for(int i=0; i<num.size(); i++) {
auto pos = find(path.begin(),path.end(),num[i]);
if(pos == path.end()) {
path.push_back(num[i]);
dfs(res,num,path);
path.pop_back();
}
}
}
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int>> res;
vector<int> path;
dfs(res,num,path);
return res;
}
};
方法二:stl的next_permutation();
class Solution {
public:
//Permutations
vector<vector<int> > permute(vector<int> &num) {
vector<vector<int>> res;
sort(num.begin(),num.end());
do {
res.push_back(num);
}while(next_permutation(num.begin(), num.end()));
return res;
}
};