你学的好象是C语言,我这个是Pascal语言的. (今天教师节所以放假半天,后面还要21:15放学(高三),估计没法再答你,有什么问题可以发到xtttsxttts@126.com,或许[注意:是或许]中秋或国庆可以有答复) 先说一个小问题:是"和"牌,不是"胡". 可以查阅字典,谢谢. 简单说明一下: Pascal可以把一个程序写在几个不同的文件里面,判断和牌的过程\函数在pdhp.pas中. 这里有代码,使用的是Turbo Pascal 7.0 如果你需要debug程序请自己下载一个, 另外,必须安装TP的CRT补丁. 代码(我的) http://bbs.pfan.cn/post-278146.html 补丁(不知道谁传的) http://bbs.pfan.cn/post-281956.html 安装 运行install.exe 回车4次 向上键 回车 Esc键 即可 CRT补丁 只需要拷贝到bin文件夹 运行 按p然后esc即可. 我写的,应该对你有写帮助. 另外算法简介我贴哪里了来着? 判断和牌的方法: 1. 判断小和(有混儿提溜)的方法(虽然不能和但是很重要) 1-1. 穷举将(对儿)牌,包括: 1-1-1. 两张相同的牌 1-1-2. 一张牌(算混儿)和混儿 如果找不到则return(false) 穷举后带入下面(下面的步骤嵌套在1-1内) 1-2. 把字牌都配成副(三个一样的) 1-3. 把剩下的混儿分配给三种“花色”(此处是穷举)。(要求每困李种花色分配后张数是3的倍数,如果错误直接break) !建议把这里拆成两个过程! 1-4. 对每一种花色的牌进行深度优先搜索(递归)判断是否成立: 递归内容: 1-4-1. 如果这种花色没有牌那么return(true) (注意:False返回上一层,True要返回给最外层递归) 1-4-2. 如果有牌,从1开始到9搜索,如果num[i]<>0那么 (此处不要忘记备份) 1-4-2-1. 去掉三个一样的(没有用混儿补,下同。很简单可以证明贪心:只要有别的牌就不用混儿顶)然后在递归1-4求解。 1-4-2-2. 去掉三个连续的,然后在递归1-4求解。其中三个连续的分 1-4-2-2-1. 牌1,牌2,牌3 (可以用混儿补,要求循环变量i<8) 1-4-2-2-2. 牌1,牌2,混儿(同上,要求i<9) 1-4-2-3. 去掉一张牌和两个混儿,然后在递归1-4求解。 递归结束。 1-5. 如果三个花色都返回true则返回true否则返回御穗false。 2. 判断其它复合牌型的方法: 首先明确一下,其他牌型包汪拆迟括:混儿吊(含双混儿吊)hd,捉伍儿zw,龙l,没混儿mh,本混儿(龙)bh,杠开gk 分数计算:此处true=1, false=0 score=(zw*3+l*4)*(bh+1) if score=0 then score=1 score=score*((hd or mh)+1)*gk 那么,我们只需要穷举hd, zw, l(剩下两个不用穷举判断即可,bh只需要在下面判断),然后择优“录取” 判断方法: 2-0. 初始化: 2-0-1.如果没有要求龙,那么本混儿龙=false 2-0-2.如果要求捉伍儿而最后抓的一张既不是五万又不是混儿则直接return(false) 将数据备份(我是说手里的14张牌,当然如果有碰杠可能是14-3n) 2-1. 如果要求混儿吊穷举“混儿的数量”=2 TO 1 STEP -1 (Downto)否则让for循环的初值=终值 { 2-2. 把备份的数据赋回来。 2-3. 如果要求混儿吊(而且没有要求捉五儿)那么: 2-3-2. 如果单混儿吊那么去掉一个混儿和最后一张牌(最后抓到的) 2-3-2. 如果双混儿吊那么去掉两个混儿和最后一张牌 2-4. 如果要求捉伍儿那么: 2-4-1. 如果要求混儿吊那么去掉最后一张牌和两个混儿 2-4-2. 如果没有要求混儿吊那么去掉“四万”*1“六万”*1和最后一张牌(没有用混儿顶,如果混儿不够return(false)又是贪心算法) 2-5-A. 如果要求龙那么: 查看原帖>>
相关文章
-
单机版魂斗罗
2023-11-03 13:18 阅读(590) -
单机版游戏冰封王座下载
2023-10-14 20:34 阅读(573) -
单机版倚天屠龙记好玩吗?
2023-10-02 02:29 阅读(561)
1 麻将“九莲宝灯”怎么胡牌?
548 阅读
2 麻将13张的全部胡法,要详细,有图解
562 阅读
3 麻将十三幺是什么牌怎么胡
576 阅读
4 麻将是谁发明的?
561 阅读
5 麻将的精髓是什么?
574 阅读