首页 > 解决方案 > 计算某些子集具有不同值的列表的最小总和

问题描述

我正在尝试在 python 中重新创建纸牌游戏“五冠”,我遇到了一个棘手的算法问题,我无法弄清楚试图计算手牌的分数。基本上,评分的工作原理是这样的:

与游戏三十三一样,玩家使用 Jokers 和当前回合的外卡作为百搭牌,创建 3 组或更多组。每一轮都有不同的外卡(3 手牌中的 3,4 手牌中的 4,5 手牌中的 5,依此类推,直到 13 手牌中的国王是百搭牌)。

更多信息 -> https://en.wikipedia.org/wiki/Five_Crowns_(game)

每组 3 张或以上为 0 分,每次 3 或以上为 0 分,您的分数是您手中牌值的总和。(王牌(1)到国王(13)和未使用的小丑(50))

e.g. with a hand of [1, 3, 4, 6, 7, 11]

 - The wild card is 6
 - Score would be 18
    - Run of 1, 6, 3, 4 = 0 
    - 7
    - 11
e.g. with a hand of [2, 2, 8, 11, 12, 13, 50, 50]

 - The wild card is 8
 - Score would be 0
   - Run of 8, 11, 12, 13 = 0 
   - Set of 2, 2, 50, 50 = 0

我不知道如何解决这个问题。有没有类似的算法?

所有建议表示赞赏!

标签: pythonalgorithmrecursionsetsubset

解决方案


推荐阅读