#Z01767. 麻将问题 (高级)
麻将问题 (高级)
题目描述
惊天动地清一色,含笑九泉杠上花 难逢友聚搓麻将,面对高人不免慌。 打出怪牌欺熟手,摸来新酵守生章。 要胡两杠成单钓,自逮三翻耍独张。 直到输赢知运气,贪玩一宿倍神伤。
听牌是麻将游戏术语。 意思是在牌局之中,到达了「只要再凑一张即可成功胡牌」的阶段,就叫「听牌」。
输入格式
本题有多组测试数据,每组测试数据有两行:
第一行:Annie2212 刚从牌山中摸到的牌,毕竟都是同一花色,我们直接用一个范围在 1 到 9 (闭区间)以内的数字表示麻将牌,下同。
第二行:摸牌前 Annie2212 手上的 13 张牌,每张牌用一个空格隔开,保证这 13 张牌已从小到大排序。
最后一个测试数据之后,会有单独的一行,这一行只有一个数字 "0" ,表示输入结束。
输出格式
如果能胡牌,输出一行 "hupai"(没有引号,下同) 如果不能胡牌,但是能听牌,输出一行 "tenpai" 后,下面若干行表示出所有换牌的选项,格式为:
X1: Y11 Y12 ... Y1j ... X2: Y21 Y22 ... Y2j ... ... Xi: Xi1 Xi2 ... Yij ... ...
表示如果换掉 Xi 这种牌中的一张的话,应该等 Yi1, Yi2, ... 这些牌中的一张才能自摸,注意,Xi 和 Yi1 之间是用一个冒号和一个空格隔开的,同一行的各个 Yij 之间是用一个空格隔开的,并且所有的 Xi 必须从小到大排序,同一行的 Yij 也要从小到大排序。
如果连听牌都做不到,输出一行 "noten" 即可。
样例解释:
第一组数据:1245679 正好是七种牌,各有两张,构成“七对形”,直接自摸
第二组数据:若摸到的 9 直接打出,这 13 张手牌可以拆解成 123-123-123-23-44,对这个 23 要构成“一般形”中的“顺子”要等 1 或 4,也可以拆解成 111-222-33-234-34,那么对这个 34 要构成“顺子”要等 2 或 5,而 2 已经有四张,不可能再摸到了,所以不考虑 2 而考虑 5
第三组数据:“七对形”要求七个“对子”的种类各不相同,所以像这样有两个相同“对子”的牌型,在日本麻将中不被承认,需要再换掉两张牌才能胡“七对型”,连听牌都没有。
9
1 1 2 2 4 4 5 5 6 6 7 7 9
9
1 1 1 2 2 2 2 3 3 3 3 4 4
5
1 1 1 1 3 3 5 6 6 8 8 9 9
0
hupai
tenpai
1: 9
4: 9
9: 1 4 5
noten
豫公网安备41072702000346号