华为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起到了至关重要的作用,它通过一系列的技术和策略来加…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
