level 13
jzz973636105
楼主
从计算机科学角度解释一下之前吧友发的吐槽姐夫的帖子
之前看到有吧友吐槽在对面一个墙的情况下嗜血能斩杀但姐夫没给,但是其实这个问题真不简单的,假如你是编写姐夫代码的程序员,你会怎么解决这个问题呢(在有墙的情况下判断给出嗜血是否能斩杀)?
让我们来分析一下:如图中只有一个8血墙和19血的英雄,嗜血后按站位顺序1个4攻,1个11攻和3个4攻,那怎么组合才能斩杀呢?这其实是一个经典的组合优化问题,是背包问题的变形bin-covering,是NP-hard问题不存在多项式算法。为了姐夫的这一功能编写代码来实现这一功能其实是有点难度的。
并不是在为姐夫错斩开脱,只是告诉大家想要实现这一功能在工程实现上的难度,楼主的这一例子也很有趣让我们窥见了一些姐夫内部代码的逻辑。作为玩家能做的也就是了解在顺序站位的情况下能给出嗜血斩杀,能控站位的时候甚至要控好站位。当然这对玩家的要求也有点高了

2020年08月05日 03点08分
1
之前看到有吧友吐槽在对面一个墙的情况下嗜血能斩杀但姐夫没给,但是其实这个问题真不简单的,假如你是编写姐夫代码的程序员,你会怎么解决这个问题呢(在有墙的情况下判断给出嗜血是否能斩杀)?
让我们来分析一下:如图中只有一个8血墙和19血的英雄,嗜血后按站位顺序1个4攻,1个11攻和3个4攻,那怎么组合才能斩杀呢?这其实是一个经典的组合优化问题,是背包问题的变形bin-covering,是NP-hard问题不存在多项式算法。为了姐夫的这一功能编写代码来实现这一功能其实是有点难度的。
并不是在为姐夫错斩开脱,只是告诉大家想要实现这一功能在工程实现上的难度,楼主的这一例子也很有趣让我们窥见了一些姐夫内部代码的逻辑。作为玩家能做的也就是了解在顺序站位的情况下能给出嗜血斩杀,能控站位的时候甚至要控好站位。当然这对玩家的要求也有点高了

