Python-6: 小E的怪物挑战

问题描述

小E在一个游戏中遇到了nn个按顺序出现的怪物。每个怪物都有其特定的血量hihi​和攻击力aiai​。小E的初始血量为HH,攻击力为AA。游戏规则如下:

1.小E可以击败血量和攻击力都小于她当前属性的怪物
2.对于每只怪物,小E可以选择与它战斗或者跳过这只怪物
3.为了保持战斗节奏,要求击败的怪物序列中,后一个怪物的血量和攻击力都必须严格大于前一个怪物

小E想知道,她最多能击败多少怪物。

**输入 **

  • n:怪物的数量
  • H:小E的血量
  • A:小E的攻击力
  • h[i]:第i个怪物的血量
  • a[i]:第i个怪物的攻击力

**输出 **

  • 返回小E最多能击败的怪物数量

**约束条件 **

  • 1 < n < 100
  • 1 < H,A,h[i],a[i] < 1000

代码

def solution(n: int, H: int, A: int, h: list, a: list) -> int:

    # PLEASE DO NOT MODIFY THE FUNCTION SIGNATURE

    # write code here

    assert n == len(a) == len(h)

    t = [(x, y) for x, y in zip(h, a) if x < H and y < A]

    m = len(t)

    f = [1 for _ in range(m)]

    for i in range(m):

        for j in range(i):

            if t[j][0] < t[i][0] and t[j][1] < t[i][1]:

                f[i] = max(f[i], f[j] + 1)

    assert m > 0

    return max(f)

if __name__ == '__main__':

    print(solution(3, 4, 5, [1, 2, 3], [3, 2, 1]) == 1)

    print(solution(5, 10, 10, [6, 9, 12, 4, 7], [8, 9, 10, 2, 5]) == 2)

    print(solution(4, 20, 25, [10, 15, 18, 22], [12, 18, 20, 26]) == 3)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄砚川

你的鼓励是创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值