思路:
这道题就是典型的dfs,是道基础题,用一个book数组来标记某个元素是否存放即可
(注意:在结构体中,vector< int >是不能显示的初始化,例如vector< int > temp (20,0)是不会通过编译的。)
代码:
class Solution {
public:
vector<vector<int> > ans;
vector<int> temp1;
int book [200]={0};
void dfs(vector<int>& nums,int step,int sum){
if(step>=sum){
ans.push_back(vector<int>(temp1.begin(),temp1.begin()+sum));
return ;
}
for(int i=0;i<sum;++i){
if(book[i]==0){
book[i] = 1;
temp1[step] = nums[i];
dfs(nums,step+1,sum);
book[i] = 0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
// book[100]={0};
int len1 = nums.size();
for(int i=0;i<len1;++i){
temp1.push_back(0);
}
dfs(nums,0,len1);
return ans;
}
};