华为OD笔试机试 - 小明的幸运数/最大坐标值 (python 2024年C卷D卷)

华为OD机试(C卷+D卷)2024真题目录(Java & c++ & python)

题目描述

小明在玩一个游戏,游戏规则如下:在游戏开始前,小明站在坐标轴原点处(坐标值为0).

给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指令前进指定步数或者后退指定步数。前进代表朝坐标轴的正方向走,后退代表朝坐标轴的负方向走。

幸运数为一个整数,如果某个指令正好和幸运数相等,则小明行进步数+1。

例如:

幸运数为3,指令为[2,3,0,-5]

指令为2,表示前进2步;

指令为3,正好和幸运数相等,前进3+1=4步;

指令为0,表示原地不动,既不前进,也不后退。

指令为-5,表示后退5步。

请你计算小明在整个游戏过程中,小明所处的最大坐标值。

输入描述

第一行输入1个数字,代表指令的总个数 n(1 ≤ n ≤ 100)

第二行输入1个数字,代表幸运数m(-100 ≤ m ≤ 100)

第三行输入n个指令,每个指令的取值范围为:-100 ≤ 指令值 ≤ 100

输出描述

输出在整个游戏过程中,小明所处的最大坐标值。异常情况下输出:12345

示例1

输入

2
1
-5 1

输出

0

说明

总共2个指令,幸运数为1,按照指令行进,依次如下游戏开始前,站在坐标轴原点,此时坐标值为0;

指令为-5,后退5步,此时坐标值为-5;

指令为1,正好等于幸运数,前进1+1=2步,此时坐标值为-3;

整个游戏过程中,小明所处的坐标值依次为[0, -5, -3],最大坐标值为0。

示例2

输入

5
-5
-5 1 6 0 -7

输出

1

说明

总共5个指令,幸运数为-5,依照指令行进,依次如下:

游戏开始前,站在坐标轴原点,此时坐标值为0,

指令为-5,正好等于幸运数,后退5+1=6步,此时坐标值为-6;

指令为1,前进1步,此时坐标值为-5;

指令为6,前进6步,此时坐标值为1;

解题思路

模拟

  1. 初始化:
  • 定义当前坐标为0。
  • 定义最大坐标值为0。
  1. 遍历指令:
  • 对于每个指令,根据其值决定是前进还是后退。
  • 如果指令等于幸运数,则行进步数+1。
  • 更新当前坐标,并比较更新最大坐标值。
  1. 输出结果:
  • 最后输出整个游戏过程中小明所处的最大坐标值。
  • 如果遇到异常情况,输出12345。

参考代码


import sys
input = sys.stdin.read
data = input().split()

n = int(data[0])
m = int(data[1])
commands = list(map(int, data[2:2+n]))

current_position = 0
max_position = 0

for command in commands:
    if command == m:
        current_position += (command + 1) if command > 0 else (command - 1)
    else:
        current_position += command
    max_position = max(max_position, current_position)

print(max_position)




  • 19
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在uniapp中,如果你想实现消息提示的角标功能,你可以按照以下步骤进行设置: 1. 首先,打开应用的通知与状态栏设置。路径为:“设置”-“通知与状态栏”-“应用通知管理”-应用名称-“桌面图标角标”。请注意,如果你的应用没有成功接入“桌面图标角标”,可能是因为没有找到相应的选项,这取决于你的操作系统版本。有些系统可能将其称为“应用图标标记”或者“桌面角标”。 2. 在你的客户端代码中,当用户点击通知时,你需要调用原生接口`setApplicationIconBadgeNumber`来清除本地角标显示值。示例代码如下: ``` (void)applicationWillEnterForeground:(UIApplication *)application { [application setApplicationIconBadgeNumber:0]; [application cancelAllLocalNotifications]; } ``` 3. 如果你使用的是极光推送(JPush),你还需要在JPush服务器中清空存储的角标值。可以使用`resetBadge`接口来实现,示例代码如下: ``` (void)resetBadge { [setBadge:0]; } ``` 4. 对于华为角标和vivo角标,需要注意一些特殊的要求。只有在使用JPush SDK版本4.4.0及以上的情况下,才支持vivo角标。在iOS中,需要使用2.1.2版本的角标。 通过以上步骤,你可以在uniapp中实现消息提示的角标功能。请根据你的具体需求和操作系统版本进行相应的设置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [跨平台应用开发进阶(十二) :uni-app 实现应用桌面图标角标提示及应用跳转](https://blog.csdn.net/sunhuaqiang1/article/details/124398170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值