#6677. 最少选几个数
最少选几个数
题面:最少选几个数
时间限制: 1 秒 内存限制: 256 MB
给定 n 个正整数 a1, a2, ..., an,以及一个目标值 T。
你可以从这 n 个数中选择若干个数,也可以一个都不选。
请你求出:如果要使被选中的所有数之和恰好等于 T,最少需要选择多少个数。
如果不存在这样的选择方案,请输出 No solution。
输入格式
第一行包含两个整数 n, T。
第二行包含 n 个正整数 a1, a2, ..., an。
输出格式
如果存在合法方案,输出一个整数,表示最少需要选择的数字个数。
如果不存在合法方案,输出:
No solution
数据范围
1 <= n <= 20
0 <= T <= 10^9
1 <= ai <= 10^9
样例
输入
4 5
1 2 3 4
输出
2
说明
可以选择 1 和 4,它们的和为 5,共选择了 2 个数。
也可以选择 2 和 3,同样可以得到 5。
不存在只选择 1 个数就能得到 5 的方案,因此答案为 2。
测试点说明表
| 测试点编号 | n ≤ | T ≤ | 特殊性质 | 设计目的 |
|---|---|---|---|---|
| 1 | 1 | 0 | 目标为 0 |
覆盖空集方案,答案为 0 |
| 2 | 5 | 单个数恰好等于目标 | 覆盖最小非空可行情况 | |
| 3 | 4 | 样例数据 | 对应原程序固定数据,答案为 2 |
|
| 4 | 3 | 1 | 目标小于所有元素 | 覆盖无解输出 |
| 5 | 10 | 一个数可直接达到目标 | 检查是否能找到最少选数 1 |
|
| 6 | 4 | 7 | 多个二元组合可行 | 覆盖普通最优方案 |
| 7 | 6 | 15 | 所有元素相同 | 检查重复元素下的最少个数 |
| 8 | 10 | 7 | 全部为 1 |
覆盖必须选择多个数的情况 |
| 9 | 31 | 元素为 2 的幂 | 覆盖唯一组合结构 | |
| 10 | 20 | 100 | 极限 n,递增序列 |
覆盖较大搜索空间和最优性剪枝 |
相关
在以下作业中: