麻将

说起麻将,无论亲朋好友聚会,还是同学聚会,总是少不了麻将的声音。网络上各种各样的麻将游戏也非常的多,现在游戏公司正在做一款麻将游戏,其中判断是否胡牌的部分由你来完成。
麻将规则如下:

麻将只能包括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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值