#SC2306. 最好的防守就是进攻

最好的防守就是进攻

问题描述

麻将作为一种源自中国古代的民间传统游戏,基本规则简单,容易上手,同时变化复杂,兼具竞技性与娱乐性,历经千年的历史仍是现今最受欢迎的娱乐项目之一。

立直麻将中,一共有34种牌,分为五类——万子,筒子,索子,风牌,三元牌。每种牌一共有4张,总共136张牌。 image

对局时,每个人手里常有13张牌,每回合摸一张组成14张,后打出一张。随着不断的摸入和打出,手牌将会不断变化。游戏的目的就是通过摸牌和出牌,使得手牌达成和牌的条件。 image 下面简单介绍和牌的条件。手牌中一些符合条件的牌可以形成一些组合。 三张同一花色(同为万子,筒子,或索子)并且数字连续的牌可以组成顺子。

image

三张完全相同的牌可以组成刻子

image

两张完全相同的牌可以组成对子

image

一般情况下,当自己的手牌可以组成四组顺子或刻子+一组对子,就可以和牌。

image

同时立直麻将中存在两种特殊的和牌形式,不满足上面的一般条件也能胡牌。一种是手牌由七组不同的对子组成的七对子牌型。 image 还有一种是手牌由十三种不同的幺九牌(四种风牌,三种三元牌,一万,一筒,一索,九万,九筒,九索共13种牌)和另外一张任意的幺九牌组成的国士无双牌型。 image 也就是说当且仅当14张手牌满足上述三种条件之一时,我们认为手牌满足和牌条件。

最近小D沉迷于立直麻将,立直麻将中一个要点就是对于局面的攻防判断,即要追求自己和牌,还是尽力不让他人和牌。而小D坚信最好的防守就是进攻,只要自己和牌够快,就能避免他人和牌,所以打麻将就应该以自己和牌为第一目标。但是有时候对于一副复杂的起始手牌,他无法判断出自己最快还需要多少轮摸牌和出牌才能和牌,他希望能够有一个程序帮助他计算这个问题。由于小D还在苦练麻将技术,他只能将这个任务交给你。

具体来说,小D会给出他的13张起始手牌和他第一次摸牌摸到的一张牌共14张牌,为了简化问题,我们认为小D是第一个摸牌的玩家,同时忽略宝牌指示牌,即136张牌中不在这14张牌中的其他牌均有可能在之后的摸牌中被摸到,在此情况下,假设之后的每一轮摸牌都能摸到我们希望的牌,请计算出这使这副手牌满足和牌条件的额外最少摸牌次数(给出的第一次摸牌不算在内),同时我们要保证最后的和牌是有可能的,即要保证和牌时的手牌和已经打出的牌中不能有某一种牌出现次数超过四次,因为每一种牌最多只有四张,所以存在相同的牌出现第五次的和牌一定是不可能发生的。

输入

输入第一行包含一个整数T(1T10)T(1\leq T \leq 10)表示询问组数,接下来TT行每行包含14个两位整数,表示小D的起始手牌和第一次摸牌摸到的牌共14张牌,保证这14张牌中不会有某种牌出现次数超过四次。

设两位整数第一位为XX,第二位为YY,保证0X30\leq X\leq3

X=0X=01Y71\leq Y\leq 7分别表示东风,南风,西风,北风,白,发,中;

X=1X=11Y91\leq Y\leq 9分别表示一万到九万;

X=2X=21Y91\leq Y\leq 9分别表示一筒到九筒;

X=3X=31Y91\leq Y\leq 9分别表示一索到九索;

输出

对于每组询问输出一行一个整数表示答案。

样例

5
11 12 13 14 15 16 17 18 19 01 01 21 22 23
01 02 03 04 05 06 07 11 19 21 29 31 39 12
01 01 02 02 03 03 04 04 14 14 14 14 39 39
01 01 02 02 03 03 04 04 14 14 14 14 04 04
02 04 04 12 13 13 14 19 19 22 24 26 32 34
0
1
2
2
3