1、问题
2、算法标签
1、DFS
3、实现代码
class Solution {
public:
set<vector<int>> temp_ans;
vector<vector<int>> ans;
void dfs(int len,int flag[],int t,vector<int> temp,vector<int> nums){
if(t==len){
int onum=temp_ans.size();
temp_ans.insert(temp);
int nnum=temp_ans.size();
if(nnum-onum){
ans.push_back(temp);
}
return;
}
for(int i=0;i<len;i++){
if(!flag[i]){
temp.push_back(nums[i]);
flag[i]=1;
dfs(len,flag,t+1,temp,nums);
flag[i]=0;
temp.pop_back();
}
}
}
vector<vector<int>> permutation(vector<int>& nums) {
int len=nums.size();
int flag[len+5];
memset(flag,0,sizeof(flag));
vector<int> temp;
dfs(len,flag,0,temp,nums);
return ans;
}
};
}