华为OD机试 - 小明的幸运数(Python/JS/C/C++ 2024 E卷 100分)

news2024/11/17 11:29:28

在这里插入图片描述

华为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,按照指令行进,依次如下:

  1. 游戏开始前,站在坐标轴原点,此时坐标值为0;
  2. 指令为-5,后退5步,此时坐标值为-5;
  3. 指令为1,正好等于幸运数,前进1+1=2步,此时坐标值为-3;
  4. 整个游戏过程中,小明所处的坐标值依次为[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。

五、解题思路

  1. 小明一开始在坐标轴的原点,即位置为 0。
  2. 设置一个变量 maxCoordinate 用于记录小明在整个游戏过程中到达的最大坐标值。
  3. 对每个指令进行遍历,并根据指令值更新小明的当前位置:
    • 如果指令值为正数,则小明向坐标轴的正方向前进相应步数。
    • 如果指令值为负数,则小明向坐标轴的负方向后退相应步数。
    • 如果指令值为0,小明的位置保持不变。
    • 如果指令值等于幸运数 m,则增加额外的一步,对于正数指令,多前进一步。对于负数指令,多后退一步。
  4. 每次更新位置后,将当前位置与 maxCoordinate 进行比较,若当前位置大于 maxCoordinate,则更新 maxCoordinate。
  5. 在遍历完所有指令后,输出记录的最大坐标值。
  6. 如果输入数据不符合预期或者发生异常,可以设定一个特殊值(如 12345)来表示异常情况。

六、Python算法源码

# 导入sys模块以便读取标准输入
import sys

def main():
    try:
        # 读取所有输入并拆分为列表
        input_list = sys.stdin.read().split()
        # 将输入转换为整数列表
        nums = list(map(int, input_list))
        
        # 读取指令的总个数n和幸运数m
        n = nums[0]
        m = nums[1]
        
        # 初始化最大坐标值和当前坐标值
        max_coordinate = 0
        current_position = 0
        
        # 从第三个元素开始读取n个指令
        for i in range(n):
            instruction = nums[2 + i]
            
            # 判断当前指令是否为幸运数m
            if instruction == m:
                if instruction > 0:
                    # 如果指令大于0,增加instruction + 1
                    current_position += instruction + 1
                else:
                    # 如果指令小于等于0,增加instruction - 1
                    current_position += instruction - 1
            else:
                # 如果指令不为幸运数,直接增加instruction
                current_position += instruction
            
            # 更新最大坐标值
            if current_position > max_coordinate:
                max_coordinate = current_position
        
        # 输出最大坐标值
        print(max_coordinate)
    
    except:
        # 异常情况下输出12345
        print("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和幸运数m
        const 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) {
        // 异常情况下输出12345
        console.log("12345");
    }
});

八、C算法源码

#include <stdio.h>

int main() {
    int n, m;
    // 读取指令的总个数n和幸运数m
    if (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和cout

    int n, m;
    // 读取指令的总个数n和幸运数m
    if (!(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在线答疑。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

modelsim仿真出现的问题

问题&#xff1a;仿真波形没有结果 解决 点击Optimization Options 选第二个 右键testbench&#xff0c;Add Wave&#xff0c;快速添加 如何更改字体大小 Tools Edit Preference

latex设置背景颜色

\documentclass{article} \usepackage{xcolor} % 定义颜色&#xff0c;将#FCF9EA转换为LaTeX的颜色定义 \definecolor{mycolor}{HTML}{FCF9EA} % 设置页面颜色 \pagecolor{mycolor} \begin{document} This is a test page with the background color set to \# FCF9E…

如何巧妙运用Shell变量:掌握脚本编程的核心技巧

目录 前言一、Shell变量——变量类型1、用户自定义变量2、环境变量用./ 启动脚本文件记得加权限哦 二、Shell变量——变量赋值和访问(一&#xff09;变量定义(二&#xff09;变量的使用(三&#xff09;删除变量(四&#xff09;添加环境变量(五&#xff09;内部变量(六&#xff…

Karmada新版本发布,支持联邦应用跨集群滚动升级

摘要&#xff1a;本次升级支持联邦应用跨集群滚动升级&#xff0c;使用户版本发布流程更加灵活可控&#xff1b;透明同事karmadactl 新增了多项运维能力&#xff0c;提供独特的多集群运维体验。 本文分享自华为云社区 《Karmada v1.11 版本发布&#xff01;新增应用跨集群滚动升…

cve 漏洞排查流程

1、打开CVE连接 确认漏洞jar包以及版本信息 https://gitee.com/opengauss/security/issues/IASNOA?fromproject-issue 2、通过命令导出对应jar包的依赖树 并导出到目标结果文件中 mvn dependency:tree -Dincludes:gson > gson.result.txt 3、过滤test引用…

Linux之实战命令17:nl应用实例(五十一)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

成都睿明智科技有限公司抖音电商服务靠谱吗?

在这个电商风起云涌的时代&#xff0c;抖音作为短视频直播的超级流量池&#xff0c;正深刻改变着人们的购物习惯。无数商家蜂拥而至&#xff0c;渴望在这片蓝海中找到属于自己的岛屿。而提及抖音电商服务&#xff0c;成都睿明智科技有限公司无疑是一个备受瞩目的名字。那么&…

2024年7月大众点评餐饮比较北上广深成渝

在做一些城市分析、学术研究分析、商业选址、商业布局分析等数据分析挖掘时&#xff0c;大众点评的数据参考价值非常大&#xff0c;截至2024年7月&#xff0c;大众点评美食店铺剔除了暂停营业、停止营业后的最新数据情况分析如下。 分析研究的字段维度包括大众点评数字id、字母…

10分钟读懂,ITIL4为什么它是IT服务管理的未来?

点击进入ITIL资料库 在当今数字化时代&#xff0c;IT服务管理(ITSM)对于企业的重要性不言而喻。而作为ITSM领域最广泛采用的最佳实践框架&#xff0c;ITIL(Information Technology Infrastructure Library)一直在引领着行业的发展。2019年&#xff0c;AXELOS发布了ITIL 4&#…

突发:OpenAI o1颠覆了人类,o1为什么超越了人类,sam万字长文解读

要点速读 2024 年 9 月 12 日&#xff0c;OpenAI 发布了其最新的人工智能模型——o1&#xff08;Learning to Reason with LLMs[1]&#xff09;&#xff0c;这是一款经过强化学习训练的大型语言模型&#xff0c;能够执行复杂的推理任务。相比于此前的 GPT-4o&#xff08;GPT-4…

网络资源模板--Android Studio 宿舍管理系统

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--宿舍管理系统 二、项目测试环境 三、项目详情 登录注册页面 ### 功能总结 1. **用户输入**: - 允许用户输入用户名和密码。 2. **登录验证**: - 检查用户名和密码…

开启争对目标检测的100类数据集-信息收集

DataBall 助力快速掌握数据集的信息和使用方式。 目标检测项目数据集样例地址&#xff1a; gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview github: https://github.com/TechLinkX/DataBall-detections-100s 请关注我们的专栏&#xff1a;DataBal…

Linux防火墙-常用命令,零基础入门到精通,收藏这一篇就够了

我们经过上小章节讲了Linux的部分进阶命令&#xff0c;我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#xff0c;而云服务器基本上就不会使用系统自带的防火墙&#xff0c;而是使用安全组来代替了防火墙的功能&#xff0c;可以简单理解安全组就是web版的防火墙&…

binkw32dll缺失怎么办?免费的dll修复工具诊断解决(报错修复)

binkw32dll缺失怎么办&#xff1f; 在使用电脑尤其是运行视频游戏时&#xff0c;我们有时会遇到“binkw32.dll缺失”的错误提示。这是一个由RAD Game Tools开发的动态链接库文件&#xff0c;主要关联于视频游戏中的视频播放技术&#xff0c;负责压缩视频回放功能。当这个文件缺…

[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作

​​​​​​Generation of Complex 3D Human Motion by Temporal and Spatial Composition of Diffusion Models L Mandelli, S Berretti - arXiv preprint arXiv:2409.11920, 2024 通过时间和空间组合扩散模型生成复杂的3D人物动作 摘要 本文提出了一种新的方法&#xff0…

Apache POI快速入门

介绍 Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI都是用于操作 Excel 文件。 Apache POI的主要组件包括&#xff1a; HS…

【开源免费】基于SpringBoot+Vue.JS服装销售平台(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 054 &#xff0c;文末自助获取源码 \color{red}{T054&#xff0c;文末自助获取源码} T054&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

LeetCode从入门到超凡(四)深入浅出理解贪心算法

引言 大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的LeetCode学习总结文档&#xff1b;本文主要讲解贪心算法。&#x1f495;&#x1f495;&#x1f60a; 介绍 贪心算法是一种经典的算法…

代码随想录Day 57|prim算法和kruskal算法精讲,题目:寻宝

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part07**prim算法精讲**题目&#xff1a;53. 寻宝解题思路&#xff1a;Prim算法Kruskal算法总结Prim算法的核心步骤&#xff08;三部曲&#xff09;&#xff1a;关键数据结构&#xff1a;算法…

Rust 语言开发 ESP32C3 并在 Wokwi 电子模拟器上运行(esp-hal 非标准库、LCD1602、I2C)

文章目录 esp-rs 简介GithubRust 包仓库Wokwi 电子模拟器开发环境Rust 环境esp-rs 环境创建 ESP32C3 项目项目结构编译项目命令运行模拟器ESP32C3 烧录 esp-rs 简介 esp-rs 是一个专注于为 Espressif 系列芯片&#xff08;如 ESP32、ESP32-S2、ESP32-C3 等&#xff09;提供 Ru…