每次用 push_back 和 pop_back 来控制选不选这个数
利用减法做,当k减到0了,就可以输出了
#include<bits/stdc++.h>
using namespace std;
int n;
int k;
int a[25];
vector<int> temp;
void dfs(int m,int sum) // m 数的位置 sum 现在的总和
{
if(sum==0)
{
cout<<"yes"<<" ";
int len = temp.size();
for(int i=0;i<len;i++)
{
cout<<temp[i]<<" ";
}
exit(0);
}
if(m==n)
{
return;
}
temp.push_back(a[m]);
dfs(m+1,sum-a[m]);
temp.pop_back();
dfs(m+1,sum);
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>k;
dfs(0,k);
cout<<"no"<<endl;
return 0;
}