Permutations
回溯。返回所有的全排列
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>> res; vector<int> tmp; vector<bool> visited(num.size(),false); dfs(0,num,visited,tmp,res); return res; } void dfs(int cnt,vector<int> &num,vector<bool>& visited,vector<int>& tmp,vector<vector<int>>& res) { if(cnt==num.size()) { res.push_back(tmp); return; } for(int i=0;i<num.size();i++) { if(!visited[i]) { visited[i] = true; tmp.push_back(num[i]); dfs(cnt+1,num,visited,tmp,res); tmp.pop_back(); visited[i] = false; } } }