求麻将听牌算法
麻将用int表示
给定13张牌,也就是一个int数组
算出所有可以听的牌。
问题点数:0、回复次数:2Top
1 楼DuoFG(多非光)回复于 2005-06-03 14:36:10 得分 0
upTop
2 楼nasi00(莫傲·逍遥)回复于 2005-06-04 03:01:00 得分 0
我有个方法:
for(i = 0; i < 麻将的总数; i++)
{
当前的牌 + i => 14张牌
if( 和牌() )
i为听牌
}
说白了就是挨个试试
那么问题的关键也就是如何判断和牌了,其实这个也不难:
对于14张牌,搜索一下,如果一张牌
比如“三万”,那么你就找是否有“四万”、“五万”或者“二万”、“四万”或者“一万”、“二万”可以和它拼成三个的。如果存在一个那就消掉,如果存在多个的话,那么就回溯一下,这样一直找下去,直到剩下两张牌,并且一样,这样就算找到解了。如果没找到,那么就不能和牌Top




