华为OD机试 2025 B卷 - 小明减肥 (Python & C++ & JAVA & JS &GO)

196 阅读2分钟

小明减肥

华为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 < 10
  • t > 0, 0 < k <= n
  • 每个运动量的卡路里 > 0

输出描述

求出可行解数量

用例1

输入

4 3 2
1 1 2 3

输出

2

说明

可行解为2,选取{0, 2}, {1,2}两种方式。

题解

思路:由于n < 10数据量比较小,直接采用二进制暴力枚举判断。

  1. 二进制为1的位置代表会选择对应运动。举个例子101表示会选中第1和第3个运动

  2. 枚举范围为[1, 2 ^ n -1], 对于每个枚举值先求出所有二进制为1的位置用数组position保存。

    1. 首先判断position的数量是否等于k,不等于直接跳过。
    2. 然后对选中运动进行卡路里求和,判断卡路里总和是否等于t.等于的话结果 +1
  3. 输出结果。

C++、Java、Python、JavaScript、Go实现源码和详细实现思路解析,点击跳转查看