tkdsheep-solution-0055

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
这题还有虾米好说的呢。。dead do就行了。。谁叫我喜欢做蘑菇题死命往里面跳呢。。

如果会打日本麻将的话,就不会被很多陷阱坑到,像我这种不会玩的土鳖就是悲剧。。写一个简单的思路给其他不会玩的童鞋吧

首先大家应该都做过麻将1了,这题的和牌规则和麻将1是一样的
但是多了两种新的和牌方式,国世无双(十三咬)以及七对子,这两种和牌方式在麻将3里面也专门出过

然后接下来就是告诉你麻将的一系列算点数的规则,给你13张牌,再给你一张【一定】能和牌的听牌组成14张
以及一些其他的初始条件(比如是否自摸,和牌的人是否为庄家等等,具体请参加题目描述),要你合理安排这14张牌的组合方式,使你最后的点数最大
举个例子,有的时候七对子(11223344778899)你也可以拆成123 123 789 789 44的这种和牌,不同的拆法有不同的和法,点数也可能不一样。

我的做法和标程思路类似吧,就是仿照麻将1,先dfs枚举怎么拆分这14张牌弄出一个和牌类型
然后再计算这种情况下的点数去更新答案,注意七对子和十三咬是比较特殊的和牌,最好单独写函数来特判

麻将算点数分为两步,算翻数(han),算fu数,然后再根据han和fu来计算基础点数
最后根据自摸、座位等情况计算最终点数

这题最麻烦的就是计算翻数(han),有十几种情况,我的做法是最土的
每种han我都写了一个函数去判断,这种写法也有一个好处就是调试的时候很方便
你可以很快知道你的翻数是怎么算出来的,来自哪些情况

对于最后的4种“满翻"13翻的情况我是直接拿出来单独判断的,因为达到13翻以上,基础点数就是固定的8000点
就不用考虑其他han来,七对子我也是单独判的,因为七对子的fu数是固定的25fu

另外就是计算fu数的时候要特别注意一个地方,fu数有一个waitfu,比如现在我手上有1s1s2s3s,然后我听的是1s
那么有两种听法,一是组1s1s,或者组1s2s3s,但前者会+2fu,后者不加,所以最开始dfs的时候一定要记住记录听牌在哪一组里
因为fu并不是越高越好,han里面有一个pinfu的规则,就是如果fu一点不加,则han会加1,所以有时应刚刻意避免加fu

其他的话有的han的规则还是蛮坑的,我不想写了{-_-},不然就失去做蘑菇题的乐趣了,大家有什么问题再评论吧


}}}
这题还有虾米好说的呢。。dead do就行了。。谁叫我喜欢做蘑菇题死命往里面跳呢。。
如果会打日本麻将的话,就不会被很多陷阱坑到,像我这种不会玩的土鳖就是悲剧。。写一个简单的思路给其他不会玩的童鞋吧
首先大家应该都做过麻将1了,这题的和牌规则和麻将1是一样的
但是多了两种新的和牌方式,国世无双(十三咬)以及七对子,这两种和牌方式在麻将3里面也专门出过
然后接下来就是告诉你麻将的一系列算点数的规则,给你13张牌,再给你一张【一定】能和牌的听牌组成14张
以及一些其他的初始条件(比如是否自摸,和牌的人是否为庄家等等,具体请参加题目描述),要你合理安排这14张牌的组合方式,使你最后的点数最大
举个例子,有的时候七对子(11223344778899)你也可以拆成123 123 789 789 44的这种和牌,不同的拆法有不同的和法,点数也可能不一样。
我的做法和标程思路类似吧,就是仿照麻将1,先dfs枚举怎么拆分这14张牌弄出一个和牌类型
然后再计算这种情况下的点数去更新答案,注意七对子和十三咬是比较特殊的和牌,最好单独写函数来特判
麻将算点数分为两步,算翻数(han),算fu数,然后再根据han和fu来计算基础点数
最后根据自摸、座位等情况计算最终点数
这题最麻烦的就是计算翻数(han),有十几种情况,我的做法是最土的
每种han我都写了一个函数去判断,这种写法也有一个好处就是调试的时候很方便
你可以很快知道你的翻数是怎么算出来的,来自哪些情况
对于最后的4种“满翻"13翻的情况我是直接拿出来单独判断的,因为达到13翻以上,基础点数就是固定的8000点
就不用考虑其他han来,七对子我也是单独判的,因为七对子的fu数是固定的25fu
另外就是计算fu数的时候要特别注意一个地方,fu数有一个waitfu,比如现在我手上有1s1s2s3s,然后我听的是1s
那么有两种听法,一是组1s1s,或者组1s2s3s,但前者会+2fu,后者不加,所以最开始dfs的时候一定要记住记录听牌在哪一组里
因为fu并不是越高越好,han里面有一个pinfu的规则,就是如果fu一点不加,则han会加1,所以有时应刚刻意避免加fu
其他的话有的han的规则还是蛮坑的,我不想写了{-_-},不然就失去做蘑菇题的乐趣了,大家有什么问题再评论吧