作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试运行扑克模拟并获得有关扑克 table 的以下数据
player[0].score == player[1].score
,则他们打平)我一直在计算每个玩家应该赢得多少,而无需创建边池并为每个玩家分配玩家。
例如,
player[0].contributed = 100
player[1].contributed = 80
player[2].contributed = 20
player[0].score = 10
player[1].score = 2
player[2].score = 10
total_pot = 200;
在这个例子中,我是否需要先返回 player[0]
20 并将其从彩池中移除?
然后,由于 player[0]
和 player[2]
并列第一,并且 player[1]
输了,底池应该分成:
player[0].received = 170
player[1].received = 0
player[2].received = 30
随后,如果 player[1]
赢了,底池应该分配为:
player[0].received = 20
player[1].received = 180
player[2].received = 0
最佳答案
首先按分数降序排序,因此您最终会得到两组:{ 0, 2 }, { 1 }。
然后,按照他们贡献的升序对每个组进行排序:{ 2 (20), 0 (100) }, { 1 (80) }。
现在,按顺序分锅:
首先,您将从每位玩家的贡献中抽取(最多)20 来创建第一个底池。并将它平分给 2 和 0。第一个底池将是 (20 + 20 + 20 = 60。因此 0 和 2 都会得到 30)。之后,第一个玩家的奖金已经完成,剩下的是:{ 0 (80) }、{ 1 (60) }。
现在,您将从每个玩家的贡献中扣除(最多)80 来创建下一个底池 (80 + 60 = 140)。并将其交给 0(不需要除法,因为顶部组中不再超过一个,因此 0 将收到全部 140)。您将得到:{ 1 (0) }。
没有更多的贡献,所以你完成了。
因此,在您的示例中,0 将收到 170,而 2 将收到 30。
关于algorithm - 在不创建边池的情况下确定扑克中的获胜金额,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5462583/
我是一名优秀的程序员,十分优秀!