问题如下:
两名玩家拥有以下格式的牌: 1.第一位玩家的牌顶部有一个字母[A-Z],底部有1或2个字母 2.第二位玩家的牌顶部有一个字母[A-Z],底部有一个数字
当卡片播放时,卡片顶部的字母将替换为底部的字母。
给定一系列数字和一张初始牌,两位牌手必须更换字母,直到第一张牌的字母转换成给定的序列。 这两个玩家可以使用每个玩家的牌数,并且对玩牌的顺序没有限制。
示例:
Player one has cards: (A, BC), (B, F), (F, BF), (C, D)
Player two has cards: (F, 0), (D, 3), (B, 2), (B, 1), (R, 3)
The given sequence: (3, 2, 0)
The initial card played: (A, BC)
1.(A, BC) played: BC
2.(C, D) played: BD
3.(D, 3) played: B (3)
4.(B, F) played: F (3)
5.(F, BF) played: BF (3)
6.(B, 2) played: F (3, 2)
7.(F, 0) played: (3, 2, 0)
我考虑了一个回溯的方法,但我被告知不需要这样的方法,我无法找到正确的方法
答案 0 :(得分:1)
首先,几点意见:
两位玩家可以使用每张牌的牌数,并且对牌位的玩家顺序没有限制。
这意味着我们有两个玩家并不重要 - 重要的是游戏中存在哪些牌。
此外,如果卡片有无限制的使用,使用letter->数字和letter->信用卡,我们可以创建一个数字的逆映射到导致该数字的字母列表。
完成这些步骤后,如果<number of letters played>=<number of required numbers>
,它看起来像assignment problem。
否则(如果<number of letters played> < <number of required numbers>
)我认为它可以由更复杂的flow network解决。