彼得在一家公司工作,这家公司已经制造了一台检测分子的机器。每个分子的重量都是正整数。这台机器的检测范围是
考虑
由于机器的细节,
你的任务是写一个程序,该程序能找到一个子集,使得该子集的总重量属于检测范围,或者判定没有这样的子集存在。
实现细节
你应该实现一个函数(方法):
std::vector<int> find_subset(int l, int u, std::vector<int> w)
和 :分别表示检测范围的两个端点, :分子的重量。- 如果存在符合要求的子集,该函数应该返回一个数组,数组中的元素代表符合要求的子集中的分子的下标。如果存在多个正确答案,返回任何一个子集即可。
- 如果不存在符合要求的子集,该函数应该返回一个空数组。
你的程序可以将分子的下标以任何顺序写入返回的数组中。
请使用提供的模板文件,参考关于你所使用的编程语言的实现细节。
样例一
find_subset(15, 17, [6, 8, 8, 7])
这个例子当中,我们有四个分子,重量分别是
样例二
find_subset(14, 15, [5, 5, 6, 6])
这个例子当中,我们有四个分子,重量分别为
样例三
find_subset(10, 20, [15, 17, 16, 18])
这个例子当中,我们有四个分子,重量分别为
子任务
子任务 | 分数 | 其他约定 | |||
---|---|---|---|---|---|
1 | 9 | 所有 | |||
2 | 10 | ||||
3 | 12 | 无 | |||
4 | 15 | ||||
5 | 23 | ||||
6 | 31 |
评测方式
评测程序将会按照下列格式读取输入数据:
- 第一行:整数
和 。 - 第二行:
个整数: 。
时间限制:
空间限制: