class Solution {
public:
vector<vector<int>>ret;
vector<int>path;
void solue(vector<int>&nums,int depth)
{
ret.push_back(path);
if(depth>=nums.size())
{
return ;
}
for(int i=depth;i<nums.size();i++)
{
path.push_back(nums[i]);
solue(nums,i+1);
path.pop_back();
}
}
vector<vector<int>> subsets(vector<int>& nums) {
solue(nums,0);
return ret;
}
};
2.1863. 找出所有子集的异或总和再求和 - 力扣(LeetCode)
class Solution {
public:
int sum=0;
int path=0;
void solve(vector<int>&nums,int dipth)
{
sum+=path;
if(dipth>=nums.size())
{
return;
}
for(int i=dipth;i<nums.size();i++)
{
path=path^nums[i];
solve(nums,i+1);
path=path^nums[i];
}
}
int subsetXORSum(vector<int>& nums) {
solve(nums,0);
return sum;
}
};
class Solution {
public:
vector<vector<int>> ret;
vector<int>path;
bool check[9]={false};
void solve(vector<int>&nums,int depth)
{
if(nums.size()<=depth)
{
ret.push_back(path);
return;
}
for(int i=0;i<nums.size();i++)
{
if(check[i]==false&&(i==0||nums[i]!=nums[i-1]||check[i-1]!=false))
{
path.push_back(nums[i]);
check[i]=true;
solve(nums,depth+1);
check[i]=false;
path.pop_back();
}
}
}
vector<vector<int>> permuteUnique(vector<int>& nums) {
sort(nums.begin(),nums.end());
solve(nums,0);
return ret;
}
};
4.17. 电话号码的字母组合 - 力扣(LeetCode)
class Solution {
public:
string good2[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string>ret;
string path;
void solve(string digits,int depth)
{
if(depth==digits.size())
{
ret.push_back(path);
return;
}
for(auto ch:good2[digits[depth]-'0'])
{
path.push_back(ch);
solve(digits,depth+1);
path.pop_back();
}
}
vector<string> letterCombinations(string digits) {
if(digits.size()==0)
{
return ret;
}
solve(digits,0);
return ret;
}
};
class Solution {
public:
vector<string>ret;
string path;
int left=0;
int right=0;
void solve(int n)
{
if(left==n&&right==n)
{
ret.push_back(path);
return ;
}
if(left<n)
{
left++;
path.push_back('(');
solve(n);
left--;
path.pop_back();
}
if(right<left&&right<n)
{
right++;
path.push_back(')');
solve(n);
right--;
path.pop_back();
}
}
vector<string> generateParenthesis(int pn) {
solve(pn);
return ret;
}
};