题目:
分析:
注意1.7和7.1的情况。
因此要按照顺序。
代码:
void f(vector<int> nums,int c,int sum,vector<int> v)
{//c 用到第几个数了 和当前是多少了
if(sum==0)
{
vv.push_back(v);
return;
}
int last=1<<30;
for(int i=c;i<nums.size();i++)
{
if(nums[i]<=sum&&last!=nums[i])
{
last=nums[i];
vector<int> v2=v;
v2.push_back(nums[i]);
f(nums,i+1,sum-nums[i],v2);
}
}
}
int main()
{
vector<int> nums;
//10,1,2,7,6,1,5]
nums.push_back(10);
nums.push_back(1);
nums.push_back(2);
nums.push_back(7);
nums.push_back(6);
nums.push_back(1);
nums.push_back(5);
sort(nums.begin(),nums.end());
int tar=8;
vector<int> v;
f(nums,0,tar,v);
cout<<vv.size();
}