hitwh 2019 新生赛 E EdChu 与炸金花
描述
EdChu 是一代赌怪,最近他在参加一个扑克比赛,比赛项目是国内热门牌类游戏——“炸金花”,炸金花的规则是每人抽三张牌(不含大小王),手牌大小由牌型和点数点数,具体牌型规则如下:
- 豹子:三张点相同的牌。例:AAA、222。
- 顺金:花色相同的顺子。例:黑桃 456、红桃 789。最大的顺金为花色相同的 AKQ,最小的顺金为花色相同的 32A。
- 金花:花色相同,非顺子。例:黑桃 368,方块 A45。
- 顺子:花色不同的顺子。例:黑桃 5 红桃 6 方块 7。最大的顺子为花色不同的 AKQ,最小的顺子为花色不同的 32A。
- 对子:两张点数相同的牌。例:223,334。
- 单张:三张牌不组成任何类型的牌。
牌型大小比较如下:
- 豹子 > 顺金 > 金花 > 顺子 > 对子 > 单张。
- 豹子、金花、对子、单张的比较,按照顺序比点的规则比较大小。 牌点从大到小为:A、K、Q、J、10、9、8、7、6、5、4、3、2,各花色不分大小。
- 顺金、顺子按照顺序比点。AKQ > KQJ >…> 32A。
- 同种牌型,对子时先比对子的大小,若对子相同则比剩下的单张大小,其它牌型比最大的牌张,如最大牌张相同则比第二大的张,以此类推。
- 当两牌型大小完全相同时,姓名字典序大者排名靠前。
字符串字典序的定义为:
字符串 \(s < t\) 当且仅当存在 \(i\) 满足对于任意 \(j < i\),\(s_j = t_j\),且 \(s_i < t_i\)。
通俗的解释为:
先比较第一个字符,若第一个字符不同,第一个字符 ASCII 值小的字符串字典序小,第一个字符ASCII 值大的字符串字典序大;如果第一个字符相同,那么比较第二个、第三个乃至后面的字符。如果比到最后两个单词不一样长(比如,sigh
和 sight
),那么字符串长度短者字典序小。
你可以直接使用 C 语言中的 strcmp()
函数或 C++ 中 string
的 <
来完成字符串字典序的比较。
现在 EdChu 通过强大的技能知道了其他所有选手的手牌,他想知道其他所有选手根据手牌大小的排名是什么样的。
输入
第一行包含一个整数 \(T(1 \le T \le 100)\),\(T\) 表示测试样例的组数。
对于每组数据,第一行包含一个整数 \(n(1 \le n \le 100)\),\(n\) 表示改组样例参赛选手的数量。
接下来 行,每行包含四个字符串 \(S(1 \le |S| \le 10), t_1, t_2, t_3\),\(S\) 为该选手的姓名,保证输入的姓名各不相同,\(t_1,t_2,t_3\) 表示该选手的手牌,用小写字母 a、b、c、d 分别代表红桃、黑桃、方片和梅花四种花色,用 A、K、Q、J、10、9、8、7、6、5、4、3、2 分别代表牌点,每张手牌用花色和牌点的组合表示,比如 a10
表示红桃 10,bK
表示黑桃 K。
输出
对于每组测试样例,输出 \(n\) 行,第 \(i\) 行包含一个字符串 \(S\),\(S\) 为排名第 \(i\) 的选手姓名。
输入样例
1
4
LFhase aQ aK aA
lxdlam bQ bK bA
cqssssss a2 b3 c5
songer d5 d7 d8
输出样例
lxdlam
LFhase
songer
cqssssss
样例解释
LFhase 与 lxdlam 的手牌都是 AKQ 的顺金,大小相同,但 lxdlam 的字典序更大('l' 的 ASCII 值大于 'L'),所以排名靠前,songer 的手牌是金花排第三,cqssssss 的手牌是单牌排第四。
信息
- ID
- 1004
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 10
- 已通过
- 3
- 通过率
- 30%
- 上传者