小明减肥
华为OD机考2025年5月9号切换正式机考题库为2025B卷,现在刷2025B卷真题,通过率将大大提高,刷得越多,通过率越高。专栏所有题目提供详细的思路讲解,多语言(C++、JAVA、Python、GO、JavaScript)源码实现,并提供
在线OJ系统在线刷题服务。
华为OD机试2025B卷真题题库目录|机考题库 + 算法考点详解
题目描述
小明有n个可选运动,每个运动有对应卡路里,想选出其中k个运动且卡路里和为t。k,t,n都是给定的。求出可行解数量
输入描述
第一行输入 n t k
第一行输入 每个运动的卡路里 按照空格进行分割
备注
0 < n < 10t > 0, 0 < k <= n- 每个运动量的卡路里 > 0
输出描述
求出可行解数量
用例1
输入
4 3 2
1 1 2 3
输出
2
说明
可行解为2,选取{0, 2}, {1,2}两种方式。
题解
思路:由于n < 10数据量比较小,直接采用二进制暴力枚举判断。
-
二进制为1的位置代表会选择对应运动。举个例子
101表示会选中第1和第3个运动。 -
枚举范围为[1, 2 ^ n -1], 对于每个枚举值先求出所有二进制为1的位置用数组
position保存。- 首先判断
position的数量是否等于k,不等于直接跳过。 - 然后对选中运动进行卡路里求和,判断卡路里总和是否等于t.等于的话结果 +1
- 首先判断
-
输出结果。