给定整数a1,a2,a3`````an,判断是否可以从中选出若干数,使他们的和恰好为K
限制条件:
1<=n<=20
-10^8<ai<<10^8
-10^8<k<<10^8
样例1
输入
n=4
a={1,2,4,7}
k=13
输出
Yes
样例2
输入
n=4
a={1,2,4,7}
k=15
输出
No
<span style="font-size:10px;">#include<iostream>
using namespace std;
#define MAX_N 21
int n;
int k;
int a[MAX_N];
bool dfs(int i,int sum)
{
if(i==n) return sum==k;
if(dfs(i+1,sum)) return true;
if(dfs(i+1,sum+a[i])) return true;
return false;
}
int main()
{
while(cin>>n)
{
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cin>>k;
if(dfs(0,0)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}</span>