求一个数列的全排列,dfs,据说是UC2013年实习生招聘的笔试题。
class Solution {
public:
vector<vector<int> > permute(vector<int> &num) {
// Note: The Solution object is instantiated only once and is reused by each test case.
vector<vector<int> > ans;
tag.assign(num.size(), false);
dfs(num, ans);
v.clear();
return ans;
}
void dfs(vector<int> &num, vector<vector<int> > &ans){
if(v.size() == num.size()){
ans.push_back(v);
return;
}
for(int i = 0; i < num.size(); i++){
if(!tag[i]){
v.push_back(num[i]);
tag[i] = true;
dfs(num, ans);
v.pop_back();
tag[i] = false;
}
}
}
vector<bool> tag;
vector<int> v;
};