给出一个数组 求任意个数的数相加的和等于给定数 输出所有满足条件的数
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void dfs(vector<int> &a,vector<vector<int>> &res,vector<int> &tmp,int target,int index)
{
if(target==0)
res.push_back(tmp);
else
{
for(int i=index;i<();i++)
{
if(i > index && a[i] == a[i-1]) continue;
tmp.push_back(a[i]);
dfs(a,res,tmp,target-a[i],i+1);
tmp.pop_back();
}
}
}
vector<vector<int>> find(vector<int> a,int target)
{
vector<vector<int>> res;
vector<int> tmp;
sort((),());
dfs(a,res,tmp,target,0);
return res;
}
int main()
{
int n;
while(cin>>n)
{
vector<int>a(n,0);
for(int i=0;i<n;i++)
cin>>a[i];
int target;
cin>>target;
vector<vector<int>> res=find(a,target);
for(int i=0;i<();i++)
{
for(int j=0;j<res[i].size();j++)
cout<<res[i][j]<<" ";
cout<<endl;
}
}
return 0;
}