Permutations
Q:全排列问题。DFS。
vector<vector<int> > permute(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<vector<int> > result;
vector<int> set;
vector<bool> bvisited(num.size());
permute_aux(num,bvisited,set,result);
return result;
}
void permute_aux(vector<int>& num, vector<bool>& bvisited,vector<int>& set,vector<vector<int> >& result)
{
if(set.size()==num.size())
{
result.push_back(set);
return;
}
for(int i=0;i<num.size();i++) //注意因为是全排列,要从0开始,挑选还没有访问过的数字
{
if(!bvisited[i])
{
set.push_back(num[i]);
bvisited[i] = true;
permute_aux(num,bvisited,set,result);
set.pop_back();
bvisited[i] = false;
}
}
}
浙公网安备 33010602011771号