nyoj 1282 部分和问题

时间:2023-03-10 07:08:18
nyoj 1282 部分和问题

部分和问题(入门题)

时间限制:1000 ms  |  内存限制:65535 KB
难度:0
描述

给你n个数(a1,a2,a3.......an) ,是否存在某一些数字加起来等于k,有就输出 "YES",否则输出 "NO"。

数据范围:n<20;

a1+a2+....an在int范围里面.

输入
多组输入
每组第一行输入两个数n,k
第二行输入n个数a1 a2 ...... an
输出
如果存在一些数加起来为k输出"YES";否则输出"NO".
样例输入
5 6
2 3 5 2 1
3 6
2 3 9
样例输出
YES
NO
 #include <cstdio>
#include <cstdlib> int n,k;
int a[]; bool dfs(int t, int sum) {
if(t == n) {
return sum == k;
}
else {
if(dfs(t+, sum)) {
return true;
}
else {
return dfs(t+,sum+a[t]);
}
}
}
int main(int argc, char const *argv[])
{
while(scanf("%d",&n) != EOF) {
scanf("%d",&k);
for(int i =; i < n; i++) {
scanf("%d",&a[i]);
} if(dfs(,)) {
puts("YES");
}
else {
puts("NO");
}
}
return ;
}