【华为OD】2024D卷——最大坐标值

题目描述:

小明在玩一个游戏,游戏规则如下:
在游戏开始前,小明站在坐标轴原点处(坐标值为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

输入:
2
1
-5 1
输出:
0

解题思路:

1、处理输入

2、判断指令:指令符合要求,且=幸运数,则指令+1

3、返回指令执行中出现的最大坐标值

代码部分

def find_max_position(n, m, commands):
    if n <= 0 or n > 100 or m < -100 or m > 100 or any(cmd > 100 or cmd < -100 for cmd in commands):
        return 12345
    position = 0
    max_pos = 0
    for cmd in commands:
        if cmd == m:
            cmd += 1
        position += cmd
        if position > max_pos:
            max_pos = position
    return max_pos

n = int(input())
m = int(input())
commands = list(map(int, input().split()))

print(find_max_position(n, m, commands))

知识点:判断语句


结语:越简单的题目解法应该越多,请路过大神留下新的思路供本小白学习一下,打开思路

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值