问题描述
小U最近沉迷于一款养成类游戏,游戏中的角色拥有三项属性:体力、智力和武力,初始值均为0。随着每天的游戏进展,这些属性会逐步增加。增加情况由一个二维数组 growup
表示,每个元素是一个长度为3的一维数组,分别表示每天的体力、智力和武力增加值。例如,[[1, 1, 2], [2, 2, 1], [2, 1, 2]]
表示第一天体力增加1,智力增加1,武力增加2,第二天分别增加2,2,1,第三天分别增加2,1,2。
在游戏中,玩家可以通过学习新技能来增强角色,但前提是角色的三项属性必须达到技能学习的要求。每个技能的学习要求也用一个二维数组 skill
表示,数组中的每个元素是一个长度为3的一维数组,分别表示学习某个技能所需的最低体力、智力和武力值。
任务是根据 growup
和 skill
数组,计算出玩家在多少天内可以学习每个技能。如果无法满足某个技能的学习要求,则返回 -1
。
代码
def solution(m, n, arrayM, arrayN):
# Edit your code here
current_attributes = [0, 0, 0]
result = [-1] * n # 初始化结果数组,默认值为-1
for day in range(m):
# 更新当前属性
for i in range(3):
current_attributes[i] += arrayM[day][i]
# 检查是否满足技能学习要求
for skill_index in range(n):
if result[skill_index] == -1: # 只检查未学习的技能
required_attributes = arrayN[skill_index]
if all(current_attributes[i] >= required_attributes[i] for i in range(3)):
result[skill_index] = day + 1 # 记录学习天数
return result
if __name__ == "__main__":
# Add your test cases here
print(
solution(
3, 3, [[1, 3, 3], [2, 5, 6], [3, 3, 1]], [[1, 1, 1], [4, 5, 5], [7, 7, 7]]
)
== [1, 3, -1]
)