1.力扣bool类型的vector用不了,只能用0,1数组代替
2.遵循原则:每一层都看看行不行,就是当检查数组等于0也就表示未被使用时插入到path中,并将检查数组的该值赋为1,表示已经使用完毕,再进行递归调用把path的一种情况排完,此时尾删path,对最后处理的一层进行重新选择,由于此次循环调用的数字不会在这一层再调用,而之后仍然需要使用,所以恢复现场赋未0
class Solution {
public:
vector<int>path;
vector<vector<int>>ret;
vector<int>check;
void dfs(vector<int>&nums)
{
if(path.size()==nums.size())
{
ret.push_back(path);
return;
}
for(int i=0;i<nums.size();i++)
{
if(check[i]==0)
{
path.push_back(nums[i]);
check[i]=1;
dfs(nums);
path.pop_back();
check[i]=0;
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
check.resize(nums.size(),0);
dfs(nums);
return ret;
}
};