华为OD机试 - 小明的幸运数(Python/JS/C/C++ 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
小明在玩一个游戏,游戏规则 如下:在游戏开始前,小明站在坐标轴原点处(坐标值为0)。
给定一组指令和一个幸运数,每个指令包含一个整数,小明按照指令前进指定步数或者后退指定步数。前进代表朝坐标轴Q的正方向走,后退代表朝坐标轴的负方向走。
幸运数为一个整数,如果某个指令为正好和幸运数相等,则小明行进步数+1。
例如:
幸运数为3,指令为[2,3,0,-5]
指令为2,表示前进2步;
指令为3,正好和幸运数相等,前进3+1=4步;
指令为0,表示原地不动,既不前进,也不后退;
指令为-5,表示后退5步。
请你计算小明在整个游戏过程中过,小明所处的最大坐标值。
二、输入描述
第一行输入1个数字n,代表指令的总个数 n(1 <= n <= 100)
第二行输入1个数字m,代表幸运数m(-100 <= m <= 100)
第三行输入n个数字,每个指令的值范围为:-100 <= 指令值 <= 100
三、输出描述
输出在整个游戏过程中过,小明所处的最大坐标值。异常情况输出:12345
四、测试用例
测试用例1:
1、输入
2
1
-5 1
2、输出
0
3、说明
总共2个指令,幸运数为1,按照指令行进,依次如下:
- 游戏开始前,站在坐标轴原点,此时坐标值为0;
- 指令为-5,后退5步,此时坐标值为-5;
- 指令为1,正好等于幸运数,前进1+1=2步,此时坐标值为-3;
- 整个游戏过程中,小明所处的坐标值依次为[0, -5, -3],最大坐标值为0。
测试用例2:
1、输入
5
-5
5 1 6 0 -7
2、输出
12
3、说明
指令 5,前进5步,坐标变为 5。
指令 1,前进1步,坐标变为 6。
指令 6,前进6步,坐标变为 12。
指令 0,不变。
指令 -7,后退7步,坐标变为 5。
最大坐标值是 12。
五、解题思路
- 小明一开始在坐标轴的原点,即位置为 0。
- 设置一个变量 maxCoordinate 用于记录小明在整个游戏过程中到达的最大坐标值。
- 对每个指令进行遍历,并根据指令值更新小明的当前位置:
- 如果指令值为正数,则小明向坐标轴的正方向前进相应步数。
- 如果指令值为负数,则小明向坐标轴的负方向后退相应步数。
- 如果指令值为0,小明的位置保持不变。
- 如果指令值等于幸运数 m,则增加额外的一步,对于正数指令,多前进一步。对于负数指令,多后退一步。
- 每次更新位置后,将当前位置与 maxCoordinate 进行比较,若当前位置大于 maxCoordinate,则更新 maxCoordinate。
- 在遍历完所有指令后,输出记录的最大坐标值。
- 如果输入数据不符合预期或者发生异常,可以设定一个特殊值(如 12345)来表示异常情况。
六、Python算法源码
# 导入sys模块以便读取标准输入
import sysdef main():try:# 读取所有输入并拆分为列表input_list = sys.stdin.read().split()# 将输入转换为整数列表nums = list(map(int, input_list))# 读取指令的总个数n和幸运数mn = nums[0]m = nums[1]# 初始化最大坐标值和当前坐标值max_coordinate = 0current_position = 0# 从第三个元素开始读取n个指令for i in range(n):instruction = nums[2 + i]# 判断当前指令是否为幸运数mif instruction == m:if instruction > 0:# 如果指令大于0,增加instruction + 1current_position += instruction + 1else:# 如果指令小于等于0,增加instruction - 1current_position += instruction - 1else:# 如果指令不为幸运数,直接增加instructioncurrent_position += instruction# 更新最大坐标值if current_position > max_coordinate:max_coordinate = current_position# 输出最大坐标值print(max_coordinate)except:# 异常情况下输出12345print("12345")# 调用主函数
if __name__ == "__main__":main()
七、JavaScript算法源码
// 使用标准输入输出模块
const readline = require('readline');// 创建接口以读取标准输入
const rl = readline.createInterface({input: process.stdin,output: process.stdout
});// 存储所有输入数据
let input = [];// 监听每一行输入
rl.on('line', (line) => {input = input.concat(line.trim().split(/\s+/).map(Number));
}).on('close', () => {try {// 读取指令的总个数n和幸运数mconst n = input[0];const m = input[1];// 初始化最大坐标值和当前坐标值let maxCoordinate = 0;let currentPosition = 0;// 循环处理每个指令for (let i = 0; i < n; i++) {const instruction = input[2 + i];if (instruction === m) {// 如果指令等于幸运数m,根据指令的正负调整位置if (instruction > 0) {currentPosition += instruction + 1;} else {currentPosition += instruction - 1;}} else {// 如果指令不等于幸运数,直接调整位置currentPosition += instruction;}// 更新最大坐标值if (currentPosition > maxCoordinate) {maxCoordinate = currentPosition;}}// 输出最大坐标值console.log(maxCoordinate);} catch (e) {// 异常情况下输出12345console.log("12345");}
});
八、C算法源码
#include <stdio.h>int main() {int n, m;// 读取指令的总个数n和幸运数mif (scanf("%d %d", &n, &m) != 2) {// 如果输入不符合要求,输出12345并退出printf("12345\n");return 0;}int max_coordinate = 0; // 初始化最大坐标值int current_position = 0; // 初始化当前坐标值int instruction;// 循环读取n个指令for (int i = 0; i < n; i++) {if (scanf("%d", &instruction) != 1) {// 如果指令读取失败,输出12345并退出printf("12345\n");return 0;}if (instruction == m) {// 如果指令等于幸运数m,根据指令的正负调整位置if (instruction > 0) {current_position += instruction + 1;} else {current_position += instruction - 1;}} else {// 如果指令不等于幸运数,直接调整位置current_position += instruction;}// 更新最大坐标值if (current_position > max_coordinate) {max_coordinate = current_position;}}// 输出最大坐标值printf("%d\n", max_coordinate);return 0;
}
九、C++算法源码
#include <iostream>
#include <vector>
using namespace std;int main() {ios::sync_with_stdio(false); // 关闭同步,加快输入速度cin.tie(0); // 解绑cin和coutint n, m;// 读取指令的总个数n和幸运数mif (!(cin >> n >> m)) {// 如果输入失败,输出12345并退出cout << "12345\n";return 0;}int max_coordinate = 0; // 初始化最大坐标值int current_position = 0; // 初始化当前坐标值int instruction;// 循环读取n个指令for (int i = 0; i < n; i++) {if (!(cin >> instruction)) {// 如果指令读取失败,输出12345并退出cout << "12345\n";return 0;}if (instruction == m) {// 如果指令等于幸运数m,根据指令的正负调整位置if (instruction > 0) {current_position += instruction + 1;} else {current_position += instruction - 1;}} else {// 如果指令不等于幸运数,直接调整位置current_position += instruction;}// 更新最大坐标值if (current_position > max_coordinate) {max_coordinate = current_position;}}// 输出最大坐标值cout << max_coordinate << "\n";return 0;
}
🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2024 E卷 200分)
🏆本文收录于,华为OD机试真题(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
相关文章:

华为OD机试 - 小明的幸运数(Python/JS/C/C++ 2024 E卷 100分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...

嵌入式学习——进程间通信方式(3)—— 共享内存
一、基本概念 什么是共享内存,顾名思义,就是将共享一片内存空间,共享内存允许多个不同的进程访问同一片内存空间。他们对这个内存直接进行操作,不需要经过内核的处理,因此共享内存是IPC通信方式中效率最高的。那如何实…...

python开发讯飞星火
一、讯飞星火网址 星火认知大模型Web API文档 | 讯飞开放平台文档中心 二、pycharm安装 pip3 install --upgrade spark_ai_python...
自然语言处理(jieba库分词)
1、完全切分法、正向最大匹配算法、逆向最大匹配算法和双向最大匹配算法 一、实验内容 一个好的NLP系统一定要有完备的词典,用于判断算法分出的词是否是具有实际意义的词。自定义一个词典,比如dic ["项目", "研究", "目的&q…...
MYSQL-查看函数创建语句语法(五)
SHOW CREATE FUNCTION 语句 SHOW CREATE FUNCTION func_name此语句类似于 SHOW CREATE PROCEDURE 的方法,但用于存储过程。 mysql> show create function world.sum \G *************************** 1. row ***************************Function: sumsql_mode:…...

图解IRF
FW1 配置思路 ① 配置IRF优先级 确认设备的主次 ② 设置批量操作的接口方便后续操作 interface range name fw-irf interface GigabitEthernet1/0/2 to GigabitEthernet1/0/3 ③ 接口 showdown 关闭接口 ④ 创建的IRF 1/1 成员的对应的接口的是 GE1/0/2 GE/1/0/3 ⑤ 开放IRF对…...

关于Chrome浏览器F12调试,显示未连接到互联网的问题
情况说明 最近笔者更新下电脑的Chrome浏览器,在调试前端代码的时候,遇到下面一个情况: 发现打开调试面板后,页面上显示未连接到互联网,但实际电脑网络是没有问题的,关闭调试面板后,网页又能正…...

南沙csp-j/s一对一家教 解一本通题: 1937:【06NOIP普及组】数列
【题目描述】 给定一个正整数k(3≤k≤15),把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当k3时,这个序列是: 1,3,4,9,10,12,13&a…...
【分布式微服务云原生】K8s(Kubernetes)基本概念和使用方法
Kubernetes简称K8S,是一个强大的开源容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由Google设计,并由Cloud Native Computing Foundation(CNCF)维护。以下是Kubernetes的一些基本概念和使用方法。 基本概念 集…...

引入Scrum激发研发体系活力
引言 在当今快速变化的技术环境中,IT企业面临着持续的市场压力和竞争,传统的瀑布式开发模式已经难以满足现代企业的需要。瀑布模型过于僵化,缺乏灵活性,导致项目经常延期,成本增加,最终可能无法达到预期效果…...

JAVA开源项目 技术交流分享平台 计算机毕业设计
本文项目编号 T 053 ,文末自助获取源码 \color{red}{T053,文末自助获取源码} T053,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 新…...
Linux学习笔记之重点概念、实用技巧和常见问题解答。
Linux学习笔记的内容涵盖了从基础知识到高级应用的各个方面,包括重点概念、实用技巧和常见问题解答。以下是对这些内容的详细描述: 一、重点概念 1. Linux简介:Linux是一种自由和开放源代码的类UNIX操作系统,由林纳斯本纳第克特托…...

“数字武当”项目荣获2024年“数据要素×”大赛湖北分赛文化旅游赛道一等奖
9月26日,由国家数据局、湖北省人民政府指导的首届湖北省数据要素创新大会暨2024年“数据要素”大赛湖北分赛颁奖仪式在湖北武汉举行。由大势智慧联合武当山文化旅游发展集团有限公司参报的武当山“数字武当”项目,荣获文化旅游赛道一等奖。 据悉&#x…...

开箱即用的大模型应用跟踪与批量测试方案
背景介绍 最近抽空参加了一个讯飞的 RAG 比赛,耗时两周终于在最后一天冲上了榜首。 整体的框架是基于 RAG 能力有点弱弱的 Dify 实现。在比赛调优的过程中,经常需要批量提交几百个问题至 Dify 获取回答,并需要跟踪多轮调优的效果差异。借助…...

在MySQL中,要查询所有用户及其权限,您可以使用以下命令:
文章目录 1、查询所有用户1.1、登录数据库1.2、select user,host from mysql.user; 2、查看用户的权限 1、查询所有用户 1.1、登录数据库 [rootlocalhost ~]# docker exec -it spzx-mysql /bin/bash rootab66508d9441:/# mysql -uroot -p123456 mysql: [Warning] Using a pas…...

VMware下载安装教程
目录 一.下载二.安装 一.下载 官网地址:官网 下载的时候选择Workstation Player,这个是免费的,当然你也可以选择下载Workstation Pro。 二.安装 下载完成之后点击安装包按照需要安装即可。 安装之后启动,可以看到这个能够免费使…...

AI跟踪报道第58期-新加坡内哥谈技术-本周AI新闻: OpenAI动荡时刻和Meta从未如此动人
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

深入理解 Nuxt.js 中的 app:error:cleared 钩子
title: 深入理解 Nuxt.js 中的 app:error:cleared 钩子 date: 2024/9/28 updated: 2024/9/28 author: cmdragon excerpt: Nuxt.js 中的 app:error:cleared 钩子的用途及其实现方式。这个钩子为开发者提供了一种优雅的方式来处理错误清除后的状态恢复和用户反馈。 categor…...

国内白帽子能赚多少钱?有多少白帽子全职挖洞能养活自己?零基础兼职挖漏洞收藏这一篇就够了
经常会有粉丝朋友私信大白,想探究一下国内的SRC(安全响应中心)平台究竟支持了多少白帽黑客的生活?又有多少白帽黑客能够不依赖于传统工作,全职从事漏洞挖掘并以此维生?以下信息或许可以为那些有意踏上这条道…...
速盾:cdn是怎么加速视频的?
CDN(Content Delivery Network)是一种网络加速服务,通过将内容分发到全球各地的服务器节点上,提供更快速度和更可靠的内容传输。当涉及到视频内容时,CDN起到了至关重要的作用,它通过一系列的技术和策略来加…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...