请教麻将的牌型分析算法
只考虑最基本的麻将胡牌方式,即3+3+3+3+2。
以下面的一手牌为例,
4万 4万 5万 6万 7万 8万 5筒 6筒 6筒 7筒 4条 4条 南风 中 (共14张)
综合已有资料得到一个大概的思路是,
将这手牌划分为已经格好的3张组合(set)和2张组合(距离一个set只差一张),
比如一个set:4万 5万 6万 或者4万 4万 4万。
距离一个set只差一张的2张组合: 5筒 6筒 或者 4条 4条。
现在的问题是,怎么求得该手牌距离成胡(3+3+3+3+2)需要的最少张数。
对于每种可能的牌型划分,都会从牌墙剩下的牌里取任意一张(34张牌里还没有打完的牌),同时从手中的牌中扔掉任意一张,直到所有的2张组合都被消掉只剩下单张牌或者已不可能成为set的2张组合(可以从此得到该牌型下所需的成胡张数)。
在此过程中,得到一个成胡所需的最小张数。
请教各位,有什么好的思路完成这个搜索过程吗(高效一点或者容易实现)?有点类似迷宫问题但约束条件又比较复杂。