华为od机试真题 — 代表团坐车(Python)

alt

题目描述

某组织举行会议,来了多个代表团同时到达,接待处只有一辆汽车可以同时接待多个代表团,为了提高车辆利用率,请帮接待员计算可以坐满车的接待方案输出方案数量。

约束:

  1. 一个团只能上一辆车,并且代表团人数(代表团数量小于30,每个代表团人数小于30)小于汽车容量(汽车容量小于100)。
  2. 需要将车辆坐满。

输入描述

第一行 代表团人数,英文逗号隔开,代表团数量小于30,每个代表团人数小于30。

第二行 汽车载客量,汽车容量小于100。

输出描述

坐满汽车的方案数量,如果无解输出0

示例1

输入:
5,4,2,3,2,4,9
10

输出:
4

说明:
以下几种方式都可以坐满车,[2,3,5]、[2,4,4]、[2,3,5]、[2,4,4]

题解

为了找到所有可能的方案使车辆正好装满,我们可以使用动态规划的方法:

  1. 定义状态: 定义一个一维数组dp,其中dp[cap]表示容纳cap人的方案数。
  2. 初始状态: 将dp[0]设为1,因为不带走任何代表团也是一种方案。
  3. 状态转移: 对于每一个代表团人数x,遍历数组dp,更新dp[cap]。具体的更新方式是:
  • 对于每一个cap,如果cap >= x,则更新dp[cap] += dp[cap - x]
  1. 结果: 最终,dp[capacity]即为坐满汽车的方案数量。

Python

groups = list(map(int, input().split(",")))
capacity = int(input())

# dp[cap] 表示容纳 cap 人的方案数
dp = [0] * (capacity + 1)
dp[0] = 1

for x in groups:
    for cap in range(capacity, x - 1, -1):
        dp[cap] += dp[cap - x]

print(dp[capacity])

相关练习题

alt

2024华为OD机试(C卷+D卷)最新题库【超值优惠】Java/Python/C++合集

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

#面经##秋招##校招##华为##笔试#
全部评论

相关推荐

点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务