46. 全排列
用深度优先遍历递归实现全排列
代码
class Solution {
public:
vector<vector<int>> permute(vector<int>& nums) {
int n=nums.size();
int visited[n];
for(int i=0;i<n;i++)visited[i]=0;
vector<vector<int>> vv;
vector<int> g;
for(int i=0;i<n;i++){
dfs(vv,i,n,g,nums,visited);
}
return vv;
}
void dfs(vector<vector<int>> &vv,int index,int n,vector<int> &g,vector<int>& nums,int visited[]){
visited[index]=1;
g.push_back(nums[index]);
if(g.size()==n){
vv.push_back(g);
}else{
for(int i=0;i<n;i++){
if(visited[i]==0)dfs(vv,i,n,g,nums,visited);
}
}
g.pop_back();
visited[index]=0;
}
};