首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >5组合的最高可能值

5组合的最高可能值
EN

Stack Overflow用户
提问于 2017-06-09 03:51:16
回答 1查看 89关注 0票数 1

根据https://www.heroescounters.com/teampicker的说法,英雄与另一个英雄有协同价值,风暴英雄有60+英雄,例如:

代码语言:javascript
运行
复制
HeroID  Synergy.With.HeroID      Synergy.Points
1               2                       97
1               3                       95
1               4                       94
45              1                       2
45              2                       11     

一个团队在风暴的英雄中有5个英雄,一个团队的全部协同作用是由公式计算的:

代码语言:javascript
运行
复制
Team_total_synergy = Synergy_Points(Hero1 with Hero2) + 
mean(Synergy_Points(Hero3 + Hero1) + Synergy_Points(Hero3 + Hero2)) + 

mean(Synergy_Points(Hero4 + Hero1) + Synergy_Points(Hero4 + Hero2) + Synergy_Points(Hero4 + Hero3)  

[And so on... till Hero5]

解释公式: Hero 1和Hero 2协同后的每一个协同值都是由该英雄与团队其他成员的平均值计算的,当Hero5加起来时,我得到了团队的协同效应,并将所有值相加。

我的答案是,我如何(用Python或R)找到具有最大协同作用的团队,如果有64名英雄(大约),我如何编写代码来找到它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-09 04:43:15

最简单的方法是通过计算英雄的所有64^5组合并计算他们的总协同得分来强迫它。然而,在大多数计算机上,这需要几分钟到一小时。

更有效的方法是首先将Synergy.Points列排序为最高到最低。然后,问题变成了找到一条由五位英雄组成的“道路”,这样路径中的最高位置就会尽可能低(即与最大的协同作用相关联)。

一条道路是一个英雄列表,这样你就可以从一个英雄跳到另一个英雄,直到你有了五个独特的英雄。在下表中,路径为1 -> 2 -> 5 -> 6 -> 7。与此路径关联的表中的位置为1、4、5、2,其中最高点为5。

这将保证总的协同作用是最高的。

代码语言:javascript
运行
复制
HeroID  Synergy.With.HeroID      Synergy.Points
1               2                       97
6               7                       95
1               4                       94
2               5                       11  
5               6                       2

至于python代码,这有点棘手..。我试着解决了大约20分钟,但我意识到有很多复杂的。例如,一个路径可能有一个循环,如果您的程序不小心,它可能会创建一个无限循环。

如果你想做这个过程一次,为这个游戏寻找最有效的团队,我会尝试蛮力的方法。如果您想要一遍又一遍地运行这段代码,我将向计算机科学堆栈溢出()提出这一点,并在python中使用get和算法来实现这一点。

我希望这有帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44449013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档