手牌只有 13 张,可能摸的牌面一共 27 种,直接枚举再判定即可。
4 张就跳过,否则当作摸到它,看 14 张能不能胡。1 或 2。2 张,拿掉这对),剩下的牌必须全部拆成顺子或刻子。-1。小明是一名麻将新手,当前手中拿着 13 张牌。他希望知道现在是不是"听牌"的状态,也就是再摸进来 1 张牌,手里的牌就能构成胡牌。
这场麻将只有三类花色:万、筒、条。牌面与字符的对应规则为:
1 到 9a 到 iA 到 I每一类花色都有 9 个点数,同一种牌面最多出现 4 张。因此在枚举摸到的牌时,如果当前手牌里某种牌面已经达到 4 张,就不能再摸到这种牌。
判断摸牌后的 14 张手牌是否胡牌,需要同时满足以下条件:
14 张;1 对将牌和若干组面子,整体张数满足 3k+2 的形式。其中面子有两种:同一花色中连续的 3 张牌称为顺子;相同的 3 张牌称为刻子。将牌是相同的 2 张牌;1 种或 2 种,不能万、筒、条三种同时出现。现在,请枚举每一种还可以摸到的合法牌面。如果摸到某张牌后能胡牌,就记录这张牌。把所有能胡的摸牌按 ASCII 码从小到大组成一个字符串输出;如果没有任何一张牌能胡牌,输出 -1。
约束条件:
13。4 张。输入包含一行,为一个只包含合法牌面字符的字符串,表示小明当前的手牌。牌的先后顺序没有要求。
输出一行。若存在能胡牌的摸牌,按字符 ASCII 码递增顺序将这些牌面字符拼接成字符串;否则输出 -1。
输入
1112345678999
输出
123456789
说明
当前手牌为 1112345678999,全部是万子,只有 1 门花色,已经满足缺一门条件。手牌中 1 和 9 各有 3 张,其余 2 到 8 各有 1 张。
枚举所有还能摸入的牌,1 到 9 的万子均没有达到 4 张上限。无论摸入哪一张万子,14 张牌都能拆成 1 对将牌和 4 组面子。例如摸入 1 后可拆为 123、456、789、111、99;摸入 9 后可拆为 123、456、789、999、11。因此能胡的摸牌是 1 到 9,按 ASCII 码升序拼接为 123456789。
输入
123456789abcA
输出
-1
说明
当前手牌为 123456789abcA,同时出现了万子、筒子、条子三门花色。缺一门条件要求胡牌时实际出现的手牌花色只能是 1 种或 2 种。
无论下一张摸入哪一张合法牌,摸牌后这三门花色仍然都会至少存在一张,因此花色数始终为 3,不能满足缺一门。所以没有任何摸牌能胡牌,输出 -1。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册