#6673. 目标和是否存在

目标和是否存在

题面:目标和是否存在

时间限制: 1 秒 内存限制: 256 MB

给定 n 个正整数 a1, a2, ..., an,以及一个目标值 T

你可以从这 n 个数中选择任意多个数,也可以一个都不选。

请判断是否存在一种选择方案,使得被选中的所有数之和恰好等于 T

输入格式

第一行包含两个整数 n, T

第二行包含 n 个正整数 a1, a2, ..., an

输出格式

如果存在一种选择方案,使得所选数字之和恰好等于 T,输出:

YES

否则输出:

NO

数据范围

1 <= n <= 20
0 <= T <= 10^9
1 <= ai <= 10^9

样例

输入

3 7
2 3 5

输出

YES

说明

可以选择数字 25,它们的和为 7,恰好等于目标值。

测试点说明表

测试点编号 n ≤ T ≤ 特殊性质 设计目的
1 1 0 目标为 0 覆盖空集即可满足目标的边界
2 5 单个数恰好等于目标 覆盖最小非空可行情况
3 3 7 样例数据 对应原程序固定数据,答案为 YES
4 1 目标小于所有元素 检查超过目标剪枝与 NO 输出
5 4 10 全部选择恰好达到目标 覆盖选择多个数的可行情况
6 5 11 全部为偶数,目标为奇数 覆盖明显不可达情况
7 6 15 所有元素相同 检查重复元素下的子集选择
8 31 元素为 2 的幂 覆盖唯一组合结构
9 10 29 全部为偶数,目标为奇数 覆盖中等规模 NO 数据
10 20 100 极限 n,全部为奇数 覆盖较大规模和深层搜索