问题描述
小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<1001<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)
1013

被折叠的 条评论
为什么被折叠?



