小编dom*_*uda的帖子

如何在算法上为扑克游戏创建包含最少交易数量的结算地图?

扑克是一种零和游戏。这意味着从牌桌上流出的金额等于流入的金额。我在这里提到扑克是因为这就是我需要解决方案的原因,但这个问题适用于任何零和游戏。

假设我玩扑克是为了钱。比赛形式为现金游戏。这意味着任何人在失去所有资金后都可以再次买入。任何人都可以用任何金额任意多次购买。我根据每位玩家的买入金额分配扑克筹码。任何时候都可以通过数筹码知道自己欠/被欠多少钱。

有两个任意假设。

1. 我们不使用现金买入,只是写在纸上,并计划在比赛结束后结算(当输赢金额已知时)。

2. 没有人会充当银行——保留所有资金并在比赛结束后重新分配给获胜者

让我们看看两个示例的手动解决方案。

示例游戏

假设有 4 个玩家:用户 A、用户 B、用户 C、用户 D 和用户 E。

游戏结束时,平衡如下。

User A lost $30
User B lost $5
User C lost $20
User D won $42
User E won $13
Run Code Online (Sandbox Code Playgroud)

解.1

我想到的第一个解决方案是:用户 A 向用户 D 发送 30 美元。

用户 B 向用户 D 发送 2 美元,用户 B 向用户 E 发送 3 美元。

用户 C 向用户 D 发送 10 美元,用户 C 向用户 E 发送 10 美元。

这解决了使用 5 笔交易的结算。

解决方案.2

用户 B 向用户 …

algorithm poker optimal

5
推荐指数
0
解决办法
73
查看次数

标签 统计

algorithm ×1

optimal ×1

poker ×1