【2024最新华为OD-C卷试题汇总】停车场车位统计(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

文章目录

  • 前言
    • 🎀关于华为OD
    • 🧭 机试备考指南
    • 🛻 停车场车位统计
      • 题目描述
      • 输入描述
      • 输出描述
      • 样例1
      • 样例2
      • 数据范围
      • 题解
      • 参考代码
    • ✅AC代码截图

前言

🎀关于华为OD

  • ✨华为OD的概念
    华为的大部分社会招聘采用了被称为OD(Outsourcing Dispatch)模式,这是一种与德科共同进行的招聘方式。在这种模式下,被招聘的员工通常被定级在13至17级,这些员工被视为华为的储备人才。华为每年会从这些OD项目中选拔表现出色的员工,并将他们转为正式员工。
  • ⌚️华为 OD 应聘流程
    • 第一步:投递简历

      • 提供姓名、邮箱、手机号、身份证号,用于锁定,所以投递前需要考虑清楚,投到项目组之后,一般不会转给另一个项目的 HR 了,也就是被锁定。
    • 第二步:机试

      • 3 道算法题,400 分满分,一般 1 个月的准备时间,华为机试必须要 300 分以上,没有过半年之后才能参加下一次考试。
    • 第三步:技术面

      • 2 轮技术面试。
    • 第四步:HR 与主管面试

    • 第五步:录用,发 offer

🧭 机试备考指南

  • 华为OD的题库大半年跟新一次,也就是说,一旦跟新,那么本年用的题目就是从该题库种选题,大概有100~200道左右

  • 最近考试换为C/D卷,C/D卷题库是一样的,D卷为双机位监控,某些外包公司应聘的为D卷。

  • 为此清隆帮大家搜集并整理了C卷的题库,后续会由清隆的ACM银牌团队将题目整理后搬上OJ,数据由团队成员精心构造,支持在线评测

🛻 停车场车位统计

题目描述

K小姐经营着一个特定大小的停车场,停车场可以看成一个数组 c a r s [ ] cars[] cars[],其中 1 1 1 表示有车, 0 0 0 表示没车。现在停车场内停放着大小不一的车辆,其中小车占一个车位(长度 1 1 1),货车占两个车位(长度 2 2 2),卡车占三个车位(长度 3 3 3)。

K小姐想知道,按照当前停车场的停放情况,最少有多少辆车停在停车场内。你能帮帮她吗?

输入描述

输入一个由 0 0 0 1 1 1 组成的字符串,以逗号分隔,表示停车场的车位情况。其中 1 1 1 表示有车, 0 0 0 表示没车,字符串长度不超过 1000 1000 1000

输出描述

输出一个整数,表示停车场内最少的停车数目。

样例1

输入

1,0,1

输出

2

说明 1 1 1 个小车占第 1 1 1 个车位,第 2 2 2 个车位空, 1 1 1 个小车占第 3 3 3 个车位,最少有 2 2 2 辆车。

样例2

输入

1,1,0,0,1,1,1,0,1

输出

3

说明 1 1 1 个货车占第 1 1 1 2 2 2 个车位,第 3 3 3 4 4 4 个车位空, 1 1 1 个卡车占第 5 5 5 6 6 6 7 7 7 个车位,第 8 8 8 个车位空, 1 1 1 个小车占第 9 9 9 个车位,最少有 3 3 3 辆车。

数据范围

1 ≤ c a r s . l e n g t h ≤ 1000 1 \le cars.length \le 1000 1cars.length1000

题解

本题可以使用贪心算法来解决。我们可以从左到右遍历停车场的车位情况,每次尽可能地停放一辆大的车。

具体地,我们维护一个变量 c n t cnt cnt,表示当前已经停放的车辆数。同时,用变量 i i i 表示当前遍历到的位置。

在遍历过程中,如果当前位置为 0 0 0,说明没有车,直接跳过。如果为 1 1 1,我们就尝试停放一辆车。首先判断能否停放一辆卡车,即 i i i i + 1 i+1 i+1 i + 2 i+2 i+2 这三个位置都为 1 1 1。如果可以,就停一辆卡车, c n t cnt cnt 1 1 1 i i i 向后移动 3 3 3 个位置。如果不能停卡车,就判断能否停货车,即 i i i i + 1 i+1 i+1 这两个位置都为 1 1 1。如果可以,就停一辆货车, c n t cnt cnt 1 1 1 i i i 向后移动 2 2 2 个位置。如果也不能停货车,那只能停一辆小车, c n t cnt cnt 1 1 1 i i i 向后移动 1 1 1 个位置。

遍历结束后, c n t cnt cnt 的值就是停车场内最少的停车数目。

参考代码

  • Python
cars = input().split(',')
n = len(cars)
cnt = 0
i = 0
while i < n:if cars[i] == '1':if i+2 < n and cars[i+1] == '1' and cars[i+2] == '1':cnt += 1i += 3elif i+1 < n and cars[i+1] == '1':cnt += 1i += 2else:cnt += 1i += 1else:i += 1
print(cnt)
  • Java
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] cars = sc.next().split(",");int n = cars.length;int cnt = 0;for (int i = 0; i < n; ) {if (cars[i].equals("1")) {if (i+2 < n && cars[i+1].equals("1") && cars[i+2].equals("1")) {cnt++;i += 3;} else if (i+1 < n && cars[i+1].equals("1")) {cnt++;i += 2;} else {cnt++;i++;}} else {i++;}}System.out.println(cnt);}
}
  • Cpp
#include <iostream>
#include <vector>
#include <string>
#include <sstream>int main() {std::string input;std::getline(std::cin, input);std::istringstream iss(input);std::string car;std::vector<std::string> cars;while (std::getline(iss, car, ',')) {cars.push_back(car);}int n = cars.size();int cnt = 0;int i = 0;while (i < n) {if (cars[i] == "1") {if (i + 2 < n && cars[i + 1] == "1" && cars[i + 2] == "1") {cnt += 1;i += 3;} else if (i + 1 < n && cars[i + 1] == "1") {cnt += 1;i += 2;} else {cnt += 1;i += 1;}} else {i += 1;}}std::cout << cnt << std::endl;return 0;
}

✅AC代码截图

🍓 目前题目还在上传ing,需要抢先体验的联系清隆开通OJ账号,由于维护服务器需要成本💰,所以名额有限(暂不免费啦~)

在这里插入图片描述

  • Python
    在这里插入图片描述
  • Java
    在这里插入图片描述
  • Cpp
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670701.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣刷题:四数相加Ⅱ

题目详情&#xff1a; 解法一&#xff1a;暴力枚举 对于这道题&#xff0c;我们的第一思路就是暴力枚举&#xff0c;我们可以写一个四层的for循环进行暴力匹配&#xff0c;只要相加的结果等于0就进行统计。但是我们会发现&#xff0c;我们的事件复杂度为O(N^4)事件复杂度非常大…

第3章 WebServer重构

3.1 重构原生Web服务框架 3.1.1 分析原生Web服务框架 在服务端代码的 ClientHandler 中&#xff0c;请求解析、处理请求、返回响应的代码混杂在一起&#xff0c;这样的设计会导致代码难以维护和理解。为了提高代码的可读性、可维护性和可扩展性&#xff0c;我们需要对这些代码…

基于C++基础知识的循环语句

一、while循环 while循环语句形式如下&#xff1a; while(表达式){语句 } 循环每次都是执行完语句后回到表达式处重新开始判断&#xff0c;重新计算表达式的值&#xff0c;一旦表达式的值为假就退出循环。用花括号括起来的多条简单语句&#xff0c;花括号及其包含的语句被称…

VueComponent构造函数

//创建school组件——注册给谁 在谁的结构上写const school Vue.extend({name: school,//开发者工具的显示template: <div><h2>学校名称&#xff1a;{{schoolName}}</h2><h2>学校地址&#xff1a;{{adress}}</h2> </div>,//结构data() {…

攻防世界-xff-referer

题目信息 分析过程 显示ip必须为123.123.123.123&#xff0c;则进行伪造 解题过程 打开repeator 提示必须来自https://www.google.com&#xff0c;则再次构造Referer 相关知识 x-forwarded-for 和 referer的区别: x-forwarded-for 用来证明ip的像是“127.0.0.1”这种&a…

Linux 第十九章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

QtWindows任务栏

目录 引言任务栏进度右键菜单缩略图工具栏完整代码 引言 针对Windows系统的任务栏&#xff0c;Qt基于系统的原生接口封装有一些非常见类&#xff0c;如QWinTaskbarButton、QWinTaskbarButton、QWinThumbnailToolBar等&#xff0c;用于利用工具栏提供更多的信息&#xff0c;诸如…

报错(已解决):无法加载文件 D:\code\NodeJs\pnpm.ps1,因为在此系统上禁止运行脚本。

问题&#xff1a; 在vscode运行uniapp项目需要拉取全部依赖&#xff0c;需要使用到pnpm&#xff0c;在vscode终端运行命令&#xff1a;pnpm install后报错&#xff1a; 解决办法&#xff1a; 1&#xff1a;我未安装pnpm&#xff0c;首先打开电脑cmd&#xff0c;运行下列命令&a…

On Hold 频发!又3本期刊被标记为On Hold ,大家谨慎投递!

【SciencePub学术】On Hold 频发&#xff01;小编在查阅资料的时候发现又有3本期刊被标记为On Hold 了&#xff0c;今天小编给大家详细介绍一下这3本期刊。 来源&#xff1a;科睿唯安官网 Results in Physics 1 期刊概况 【期刊简介】IF&#xff1a;5.3&#xff0c;JCR1区&am…

CSS Web服务器、2D、动画和3D转换

Web服务器 我们自己写的网站只能自己访问浏览&#xff0c;但是如果想让其他人也浏览&#xff0c;可以将它放到服务器上。 什么是Web服务器 服务器(我们也会称之为主机)是提供计算服务的设备&#xff0c;它也是一台计算机。在网络环境下&#xff0c;根据服务器提供的服务类型不…

ubuntu20.04搭建Fabric教程

本章节环境配置 ubuntu: 20.04 go&#xff1a;1.16.3 docker: 20.10.6 docker-compose: 1.27.2 fabric&#xff1a;2.2.0 fabric-ca: 1.4.9 一 搭建通道 新建工作目录 mkdir fabric && cd fabric配置go代理 go env -w GO111MODULEon ​ #更新下载包的镜像 go env …

【Docker】★★★

docker 的网络模式 ●host模式&#xff1a;使用 --nethost 指定 容器与宿主机共享网络命名空间、ip和端口 ●container模式&#xff1a;使用 --netcontainer:NAME_or_ID 指定 新建的容器共享已有容器的网络命名空间、ip和端口 ●none模式&#xff1a;使用 --netnone 指定 不进行…