【发布时间】:2015-12-14 00:11:15
【问题描述】:
我正在解决以下问题,并采用蛮力方法,但无法提出一个好的解决方案。问题如下:
有 2*N 卡。您和您的对手将它们分开(给您 N 张牌,给他们 N 张牌)。您确切地知道他们有什么牌以及他们将按什么顺序打牌。
游戏规则如下:在前 N/2 轮中,牌最高的人获胜,在最后 N/2 轮中,牌最低的人获胜。
考虑到这些规则以及你的对手出牌的顺序,你可以获得的最大胜利数是多少。
例子:
你有牌:2、5、6、7。 你的对手有牌:1、8、4、3,并按顺序打出。
你能得到的最高分数是 2,因为你打 7 对 1,输掉第 2 和第 3 轮,然后在最后一轮打 2 赢。
我的想法:把你的卡片分成两堆,你的编号较大的和编号较小的。然后找出最佳匹配。
非常感谢伪代码/算法的想法。
编辑:总共有 N 轮。前 N/2 轮:较高的牌获胜。最后 N/2 轮:较低的牌获胜。 N 必须是偶数。
【问题讨论】:
-
如果你知道他们会按这个顺序玩
1, 8, 4, 3,你最多可以赢3次......你会先玩你的2,然后再玩顺序无关紧要,因为剩下的牌没有一张能打败8,但它们都会打败4和3。 -
@CalvinP.: vs
4,3,是最低的获胜者... -
我已经对问题进行了修改。
-
啊,这更清楚了规则/逻辑。你试过什么了?很高兴首先看到您的代码。编辑:另外,如果
N是奇数会发生什么? -
这些是我的想法:按我的卡片编号排列我的卡片。然后有两个问题,第一轮 N/2 轮和第二轮 N/2 轮。在上半年,我相信最大化配置将是当您的较大数字之间的差异最小时。但是,经过一些测试,它不起作用。我仍在解决这个问题,但正在看看你们是否有想法/帮助。
标签: algorithm graph game-theory