华为OD机试 - 代表团坐车 - 动态规划(Java 2023 B卷 200分)

目录

华为OD机试 2023B卷题库疯狂收录中,刷题++点这里++

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

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

约束:

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

二、输入描述

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

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

三、输出描述

坐满汽车的方案数量

如果无解输出0

四、解题思路

  1. 第一行输入代表团人数,英文逗号隔开;
  2. 第二行输入汽车载客量,汽车容量小于100;
  3. 通过java8 Stream表达式(简洁/方便/上档次)快速拆解输入行;
  4. 初始化动态规划数组,dp[i]表示载客量为i时的方案数;
  5. 载客量为0时,方案数为1(不接待任何代表团);
  6. 动态规划转移,从后往前遍历,避免重复计算;
  7. 转移方程:dp[j] += dp[j - group],表示加上接待当前代表团后的方案数;
  8. 输出坐满汽车的方案数量;

五、Java算法源码

java 复制代码
package com.guor.od;

import java.util.*;

public class OdTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 读取代表团人数
        int[] groups = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();

        // 读取汽车载客量
        int capacity = Integer.parseInt(sc.nextLine());

        // 初始化动态规划数组,dp[i]表示载客量为i时的方案数
        int[] dp = new int[capacity + 1];
        // 载客量为0时,方案数为1(不接待任何代表团)
        dp[0] = 1;

        // 动态规划转移
        for (int group : groups) {
            // 从后往前遍历,避免重复计算
            for (int j = capacity; j >= group; j--) {
                // 转移方程:dp[j] += dp[j - group],表示加上接待当前代表团后的方案数
                dp[j] += dp[j - group];
            }
        }

        // 无解
        if (dp[capacity] == 0) {
            System.out.println(0);
        } else { // 有解
            System.out.println(dp[capacity]);
        }
    }
}

六、效果展示

1、输入

5,4,2,3,2,4,9

10

2、输出

4

3、说明

解释以下几种方式都可以坐满扯,所以优先街道输出为4

[2, 3, 5]

[2, 4, 4]

[2, 3, 5]

[2, 4, 4]

🏆下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

相关推荐
我要吐泡泡了哦1 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1231 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
qmx_071 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战1 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
贾saisai3 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
技术无疆3 小时前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
北岛寒沫3 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
铁匠匠匠5 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
小齿轮lsl6 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab