游戏中最优敌人攻击顺序判定方法是否正确?
你的思路不正确
你的核心问题在于,计算“规避伤害”时用了固定的总击杀时间推导,但这个逻辑仅在两两比较时偶然等价于正确策略,当敌人数量≥3时,会出现优先级选择错误,导致最终受到的伤害更高。
举个反例:
- 敌人1:每秒伤害
3,击杀耗时1 - 敌人2:每秒伤害
4,击杀耗时2 - 敌人3:每秒伤害
6,击杀耗时3
总击杀时间为1+2+3=6
按你的思路计算规避伤害:
- 敌人1:
(6-1)*3=15 - 敌人2:
(6-2)*4=16 - 敌人3:
(6-3)*6=18
你会优先击杀敌人3,再杀敌人2,最后杀敌人1,总受到伤害为:
3*(3+4+6) + 2*(3+4) +1*3 = 39+14+3=56
但正确的最优顺序应该是优先击杀每秒伤害/击杀耗时比值更高的敌人(敌人1的比值3/1=3,敌人2为4/2=2,敌人3为6/3=2),也就是先杀敌人1,再杀任意剩下的敌人,总受到伤害为:
1*(3+4+6) +2*(4+6)+3*6=13+20+18=51,明显比你的思路结果更低。
正确的判断逻辑
对于任意两个敌人A和B,判断谁优先击杀的标准是:
当A.damageRate * B.timeToKill > B.damageRate * A.timeToKill时,先杀A更优。
等价于优先击杀每秒伤害与击杀耗时的比值(damageRate/timeToKill)更大的敌人。
这个策略的本质是,优先处理“单位时间输出更高”的敌人——每多让这类敌人活一秒,你受到的额外伤害更多,所以越早击杀越划算。
内容的提问来源于stack exchange,提问作者dumbquestionasker




