当前位置: 面试刷题>> 提莫攻击 (经典算法题500道)


### 完整题目描述 **提莫攻击** 在《英雄联盟》这款游戏中,提莫(Teemo)以其独特的“毒性射击”技能闻名。这个技能使得提莫的普通攻击附带额外的魔法伤害,并且如果目标在一段时间内受到提莫的毒性射击再次攻击,会承受额外的持续伤害(中毒效果)。 现在,假设你是一名游戏开发者,需要设计一个算法来模拟提莫的“毒性射击”技能。算法需要接收一系列的攻击事件(包含攻击时间戳和伤害值),并计算每个攻击事件造成的总伤害(包括直接伤害和中毒的持续伤害)。 中毒效果的具体规则如下: 1. 每次攻击都会造成直接伤害。 2. 如果目标在受到当前攻击之前4秒内已经受到过提莫的攻击,则额外造成中毒的持续伤害,这个持续伤害是固定的值。 3. 中毒效果不会叠加,即每次攻击只触发一次中毒效果(即使目标在4秒内被多次攻击)。 **输入**: - 一个包含多个元素的列表,每个元素是一个包含两个整数的元组(或数组):`(timestamp, damage)`,其中`timestamp`是攻击的时间戳(单位:秒),`damage`是此次攻击的直接伤害值。 - 一个整数`poisonDamage`,表示中毒的持续伤害值。 **输出**: - 一个列表,包含每个攻击事件造成的总伤害(包括直接伤害和中毒的持续伤害,如果适用)。 ### PHP 示例代码 ```php ``` ### Python 示例代码 ```python def calculate_total_damage(attacks, poison_damage): last_hit_time = -5 # 初始化上一次攻击的时间戳 total_damages = [] for timestamp, damage in attacks: total_damage = damage if timestamp - last_hit_time <= 4: total_damage += poison_damage total_damages.append(total_damage) last_hit_time = timestamp return total_damages # 示例 attacks = [(1, 10), (5, 15), (9, 7), (13, 10)] poison_damage = 5 total_damages = calculate_total_damage(attacks, poison_damage) print(total_damages) ``` ### JavaScript 示例代码 ```javascript function calculateTotalDamage(attacks, poisonDamage) { let lastHitTime = -5; // 初始化上一次攻击的时间戳 const totalDamages = []; attacks.forEach(([timestamp, damage]) => { let totalDamage = damage; if (timestamp - lastHitTime <= 4) { totalDamage += poisonDamage; // 如果在4秒内再次受到攻击,增加中毒伤害 } totalDamages.push(totalDamage); lastHitTime = timestamp; // 更新上一次攻击的时间戳 }); return totalDamages; } // 示例 const attacks = [[1, 10], [5, 15], [9, 7], [13, 10]]; const poisonDamage = 5; const totalDamages = calculateTotalDamage(attacks, poisonDamage); console.log(totalDamages); ``` **码小课网站中有更多相关内容分享给大家学习**,涵盖算法设计、数据结构、编程语言等多个方面,帮助大家提升编程技能。
推荐面试题