说起麻将,无论亲朋好友聚会,还是同学聚会,总是少不了麻将的声音。网络上各种各样的麻将游戏也非常的多,现在游戏公司正在做一款麻将游戏,其中判断是否胡牌的部分由你来完成。
麻将规则如下:
麻将只能包括3种类型:条,筒,万。没有“白门、东风、南风、西风、北风、、红中”。每种牌都是数字从1到9,每个数字有4张,共36张,筒,万,条均一样。
胡牌规则如下:
a) 手里面的牌最多只有两种类型,即必须打缺一种,不能出现:条,筒,万都存在的情况。
b) 必须有一个对子,即两张相同的牌,比如:两个2筒,两个4条等。
c) 剩余的牌,每3张需要凑成一个有效牌,比如:3个一样的牌(3个2筒),或者3个顺子(1条2条3条)。
如果所有的牌都能够凑好,再满足规则b和a,有一个对子,并且所有的牌只有两种,那么就可以胡牌了。
d) 有一种特殊牌,叫做七对,即全部的牌都是成对出现,比如:2筒2筒5筒5筒3筒3筒4条4条8条8条1条1条2条2条,
一共7对,再满足条件a,也可以胡牌。
e) 假设牌不会出现碰的情况,即手里面的牌是14张。输入数据肯定都是麻将牌,不用考虑会输入“白门”,“红中”“东风、南风、西风、北风”等牌。
要求实现函数:
bool IsMahjonggWin(char *pCards)
【输入】 char *pCards:参数说明:
假设:
条子为:T,2条输入为:2T
筒子为:D,3筒输入为:3D
万子为:W,4万输入为:4W
pCards:输入麻将序列。比如:”1T2T2T2T3T7T8T9T5D4D7D8D8D8D”
【返回】 bool类型:如果能够胡牌,返回true;如果不能胡牌,返回false。
比如:“7T1T8T2T2T2T3T9T5D4D3D8D8D8D”可以转换成“1T2T3T2T2T 7T8T9T3D4D5D8D8D8D”,可以胡牌。
注意:需要考虑输入的合法性。输入的牌为字符串,字母为大写的”TDW”,请编码的时候注意。
示例
输入: “1D2D2D2D3D3D4D4D5D5D5D6D6D7D”,返回true
输入: “1D1D1D3D3D3D5D5D5D7D7D7D2W3W”,返回false