虽然单花色胡牌算法面试时写出来了,但是完整的胡牌算法却没有写,既然遇到了,秉着不抛弃不放弃的精神,当然不能原谅懒惰的自己了。下面这篇为一个完整的胡牌算法。
胡牌规则除了以下几点,其余与单花色胡牌规则一致:
1.东南西北中发,只能三个相同的牌才能进行组合,不允许与不同的牌进行组合
2.牌的花色可能有多种
分析:
这里由于涉及到多花色的情况,我们可以将它当作是单花色的一个扩展。即,只要从牌中取出一对将牌后,将剩余的牌按照花色分别判断是否符合规则即可。其中judgeLeft函数为单花色中使用的函数。代码如下:
enum eHuaseType
{
EN_WANZI = 0, // 万字
EN_TIAOZI, // 条字
EN_BINGZI, // 饼字
EN_FENG, // 风
EN_HUASE_COUNT // 花色的种类数
};
#define MAX_LENGTH_OF_HUASE (10)// 多申请一些内存,方便取值
// 假定牌对应的数字如下:1~9为万字,11~19为条字,21~29为饼字,31~37为东南西北中发白
bool judgeLeftHuase(<