编程题
### 题目背景 刚刚放假回家的你打算问一问你邻居家的弟弟高考考了多少分,但是他说他已经在去年的 $NOI$ 全国赛中被保送清华了!你又得知,他今年上半年迷上了一款叫做《雀魂麻将 ( $MahjongSoul$ ) 》的游戏。这个游戏每一局都由 $3 - 4$ 名玩家参与,每个人初始状态下会被随机发放 $13$ 张手牌,之后在每一轮自己的回合中,你将抽到一张新牌,并从持有牌中任选一张丢弃,最终的目标就是将手中的牌组成特定的序列来胡牌获得自己的得分。他认真研究了胡牌规则后认为这种具有很强娱乐性的游戏能够给他来带欢乐。但是他上周在和家人打实体麻将的时候发现如果要自己整理牌的话总是不容易判定是否能够胡牌,所以需要你帮助他判断手牌处于什么状态。 以下是简化后的相关规则: 1. 胡牌:手中的 $13$ 张牌加上自己摸或者别人打出的一张可以组成 $4$ 组面子(顺子或刻子)和一组雀头即可胡牌,例如下图的牌型:![胡牌实例](https://dn-simplecloud.shiyanlou.com/questions/uid1825627-20230629-1688030792757)如果你的 $13$ 张手牌加上自己摸或者别人打出的一张正好可以组成顺子 + 刻子共 $4$ 组,外加一组雀头,即可判定胡牌。为简化运算,这里不对役牌进行要求,**不限制每张牌的数量上限!**注意,[ 东 , 南 , 西 , 北 , 白 , 发 , 中 ] 这七张牌只能组成三张相同的刻子或者两张相同的雀头,不能组成顺子! 2. 听牌:除去最后一张牌,前 $13$ 张手牌还差一张就可以胡牌。如下图:![听牌实例](https://dn-simplecloud.shiyanlou.com/questions/uid1825627-20230629-1688031235551)那么你只需要等待场上有人打出或者自己摸到一张南即可胡牌。**注意:听牌判定只查看前 $13$ 张牌,不考虑最后一张牌!!!** 3. 无事发生:手牌太烂了,胡不了也听不了,需要继续努力! ### 题目要求 需要你根据现有的手牌来判定玩家所处的状态并输出。你只需要判定上述背景中给出的三种情况。 ### 输入格式 输入数据有一行 $14$ 个字符,前 $13$ 张代表你的手牌,第 $14$ 张为你自己摸到的或者其他玩家打出的牌。注意:**手牌不一定有序!**为简化输入,只输入牌代号,每张牌对应的代号如下: | 牌名 | 代号 | | ----------- | ----- | | 一万 - 九万 | a - i | | 一饼 - 九饼 | A - I | | 一条 - 九条 | 1 - 9 | | 东 | + | | 南 | - | | 西 | * | | 北 | / | | 白 | ( | | 发 | { | | 中 | [ | ### 输出格式 输出现在的状态。如果满足胡牌规则,在一行中输出 `Win!`;如果处于听牌状态,在第一行输出 `Waiting:` ,第二行输出所有缺失的一张可能胡牌的牌,如果有多张牌都可以听,则按 $ascii$ 值从小到大输出,中间用英文逗号分隔。如果不满足上面两种情况,则只输出一行 `No winning hand!` 。 ### 输入样例 1 ``` abccdeABCCDE++ ``` ### 输出样例 1 ``` Win! ``` ### 样例解释 1 其中一种胡牌组合为:`[a,b,c]` `[c,d,e]` `[A,B,C]` `[C,D,E]` `[+,+]` 。 ### 输入样例 2 ``` abccdefABCDEF+ ``` ### 输出样例 2 ``` Waiting: c,f ``` ### 样例解释 2 其中一种胡牌组合:`[a,b,c]` `[c,c]` `[d,e,f]` `[A,B,C]` `[C,D,E]` 此牌型缺一张 `[c]`。 另一种胡牌组合为:`[a,b,c]` `[c,d,e]` `[f,f]` `[A,B,C]` `[C,D,E]` 此牌型缺一张 `[f]`。 按照 $ascii$ 值输出 `c,f`。 ### 输入样例 3 ``` acegiACEGI+-[[ ``` ### 输出样例 3 ``` No winning hand! ``` ### 样例解释 3 无法组成听牌和胡牌组合。 ### 输入样例 4 ``` aaabbbcccdddei ``` ### 输出样例 4 ``` Waiting: b,c,d,e ``` ### 样例解释 4 某一种胡牌组合:`[a,a,a]` `[b,b,b]` `[c,c,c]` `[c,c,c]` `[e,e]` 此牌型缺一张 `[e]`。 另一种胡牌组合:`[a,a,a]` `[b,b]` `[b,c,d]` `[b,c,d]` `[c,d,e]` 此牌型缺一张 `[b]`。 另一种胡牌组合:`[a,a,a]` `[b,b,b]` `[c,d,e]` `[c,c,c]` `[d,d]` 此牌型缺一张 `[c]`。 另一种胡牌组合:`[a,a,a]` `[b,b,b]` `[c,c]` `[c,d,e]` `[d,d,d]` 此牌型缺一张 `[d]`。 按照 $ascii$ 值输出 `b,c,d,e`。
查看答案
赣ICP备20007335号-2