说起麻将,那可是川渝市民的最爱,无论亲朋好友聚会,还是业务谈判,总是少不了麻将的声音。 成都麻将只能包括3种类型:条,筒,万。没有“门、东南西北、红中”。 每种牌都是数字从1到9,每个数字有4张,共36张。筒,万,条均一样。 胡牌简化规则如下:
1.必须有一个对子,即两张相同的牌,比如:两个2筒,两个4条等。 2.剩余的牌,每3张需要凑成一个有效牌,比如:3个一样的牌(3个2筒),或者3个顺子(1条2条3条),如果所有的牌都能够凑好,再满足规则2和1,有一个对子,并且所有的牌只有两种类型,那么就可以胡牌了。 3.假设牌不会出现碰的情况,即输入的牌肯定是13张。 4.输入牌肯定都是麻将牌,不用考虑异常输入;也不用考虑会输入“门”,“红中”等成都麻将中不会出现的牌。
5.条用T表示,D用D表示,万用W标识。
6.不用考虑输入的合法性,这个由函数的使用者保证。输入的牌为字符串,字母为大写的TDW”
要求根据13个已知输入,判断可以胡那几张牌。
混了这么久,第一次写。昨天参加华为编程比赛。做到了这道题。以前看过,是2012年的原题。
写的也不好,只有功能没得质量。
大概思路是,给13张牌,判断胡哪张。
把每张牌都加入到13张里,构成的14张牌,再判断牌型。
有一种花色要拿来做将。
这种花色牌的数量模3就一定是2。
找到做将牌的花色。
将这种花色去掉可能是将的两个牌,再判断剩下的拍是否满足三个一组的胡牌条件。
剩下的花色直接判断是否满足三个一组的胡牌条件。
判断的时候用递归实现,将满足条件的项减去后,传入下一次递归。
最后剩下的牌个数为0时,就通过。
成都麻将还要判断缺一门的条件,即最多只有两种花色。
但是笔试提交的时候发现,加了该条件得分反而更低。
估计是用例的问题。给出的样例也说明不是缺一门也可以胡。
#include <stdio.h> #include <vector&
成都麻将胡牌规则
最新推荐文章于 2022-07-29 01:30:34 发布