← 完整题目索引

PROJECT EULER · #0054

扑克手牌

Poker Hands

仅题目 · 已解决原题 ↗

在纸牌游戏扑克中,一手牌由五张牌组成,按以下方式从低到高排列:

  • 高牌:价值最高的牌。
  • 一对:两张相同价值的牌。
  • 两对:两对不同的。
  • 三张牌:三张相同价值的牌。
  • 顺子:所有牌都是连续的值。
  • 同花:所有同花色的牌。
  • 满堂彩:三个相同且一对。
  • 四张牌:四张相同价值的牌。
  • 同花:所有牌都是相同花色的连续值。
  • 皇家同花顺:同花色为 10、J、Q、K、A。

牌的价值顺序为:
2、3、4、5、6、7、8、9、10、J、Q、K、A。

如果两名玩家的手牌等级相同,则由最高值组成的等级获胜;例如,一对八击败一对五(参见下面的示例 1)。但如果两个等级平局,例如,两个玩家都有一对 Q,则比较每手牌中最大的牌(参见下面的示例 4);如果最大的牌平局,则比较下一个最大的牌,依此类推。

考虑以下五手牌发给两名玩家:

牌局 玩家 1 玩家 2 获胜者
1 5H 5C 6S 7S KD
一对五
 2C 3S 8S 8D TD
一对八人制
 玩家 2
2 5D 8C 9S JS AC
最大牌 Ace
 2C 5C 7D 8S QH
最大牌皇后
 玩家 1
3 2D 9C AS AH AC
三张 A
 3D 6D 7D TD QD
齐平钻石
 玩家2
4 4D 6S 9H QH QC
一对皇后
最大牌九
 3D 6D 7H QD QS
一对皇后
最大牌七
 玩家 1
5 2H 2D 4C 4D 4S
满屋
三人间
 3C 3D 3S 9S 9D
满屋庄家
三三
 玩家 1

文件 poker.txt 包含发给两名玩家的 1000 手随机牌。文件的每一行包含十张牌(用一个空格分隔):前五张是玩家 1 的牌,后五张是玩家 2 的牌。您可以假设所有手牌都是有效的(没有无效字符或重复的牌),每个玩家的手牌没有特定的顺序,并且每手牌都有明显的获胜者。

玩家 1 赢了多少手牌?

题解待补充

这道题的题目已收录,解题思路、代码和答案将在后续补充。