标签:元素 题目 ref png ret turn ima flag 否则
第1行:2个数N, K, N为数组的长度, K为需要判断的和(2 <= N <= 20,1 <= K <= 10^9) 第2 - N + 1行:每行1个数,对应数组的元素A[i] (1 <= A[i] <= 10^6)
如果可以,输出:"Yes",否则输出"No"。
5 13 2 4 6 8 10
No
1 #include<iostream> 2 using namespace std; 3 long long int n,a[21],m; 4 int flag=0,v[21]={0}; 5 void dfs(long long int sum,int t) 6 { 7 //cout<<sum<<endl; 8 if(sum==m) 9 { 10 flag=1; 11 return; 12 } 13 if(flag||sum>m||t>n) 14 return; 15 dfs(sum+a[t],t+1); 16 dfs(sum,t+1); 17 } 18 int main() 19 { 20 scanf("%lld%lld",&n,&m); 21 long long int sum=0; 22 for(int i=1;i<=n;i++) 23 { 24 scanf("%lld",&a[i]); 25 sum+=a[i]; 26 } 27 if(sum<m) 28 printf("No\n"); 29 else if(sum==m) 30 printf("Yes\n"); 31 else 32 { 33 flag=0; 34 dfs(0,1); 35 if(flag) 36 printf("Yes\n"); 37 else 38 printf("No\n"); 39 } 40 return 0; 41 }
标签:元素 题目 ref png ret turn ima flag 否则
原文地址:https://www.cnblogs.com/spongeb0b/p/9345863.html