class Solution {
public:
vector<vector<int>> ans;
vector<int> ind;
void dfs(vector<int>nums,vector<int>ind,int maxn,vector<int>used){
if(ind.size()==nums.size()){
ans.push_back(ind);
return;
}
for(int i=0;i<nums.size();i++){
if(used[i]==0){
int nownum=nums[i];
ind.push_back(nownum);
used[i]=1;
dfs(nums,ind,maxn,used);
ind.pop_back();
used[i]=0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
int maxn=nums.size()-1;
vector<int> used(maxn+1,0);
dfs(nums,ind,maxn,used);
return ans;
}
};
力扣46. 全排列 LeetCode (C++实现)
最新推荐文章于 2022-10-13 10:33:55 发布
这段代码展示了如何利用深度优先搜索(DFS)算法来生成一个整数数组的所有可能排列组合。函数`permute`接收一个整数数组,并返回一个包含所有排列的二维整数数组。在递归过程中,`used`数组用于跟踪每个数字是否已被使用。
摘要由CSDN通过智能技术生成