跑胡子胡牌算法(带赖子、基于回溯算法)
跑胡子规则
- 跑胡子,小写“一”到“十”各4张共40张,大写“壹”到“拾”各4张共40张。
- 砌牌:跑胡子为3人同玩,庄家砌21张,其他方位砌20张,留19张在墩上。
- 一对牌:砌牌后,手中2个相同的牌为1对。
- 一坎牌:砌牌后,手中3个相同的牌为1坎。一坎牌不能拆散与其他牌组合。
- 一提牌:砌牌后,手中4个相同的牌为1提。一提牌不能拆散与其他牌组合。在进第一张牌之前,必须放到桌面示众。泸州地区叫一垅。
- 一句话:砌牌后,手中的牌依据规则组合成相连的三张,比如小四、五、六,称为一句话。另外二、七、十组合也称为一句话。泸州地区叫一列
- 绞牌:当1对大牌与1张相同的小牌,或者1对小牌与1张相同的大牌组合时,成为绞牌。如1对小九与1张大玖。
跑胡子从胡牌算法上跟麻将有许多相似之处,但比一般麻将规则更复杂一些:
1.几组牌(三张一组)+将(一对),跑胡子可以没将
2.都有:一句话(顺子)、提(杠)、坎(碰)、对(将),而跑胡子多一种绞牌及二七十特殊牌组
3.跑胡子还有最小胡息、翻数、红黑数等更复杂的算分逻辑
再讲讲回溯算法
- 回溯算法,在我看来是一种用递归方式穷举所有解的算法,写的差的回溯算法跟穷举方法的效率差不多,甚至更差(代码可读性差、递归占用较多堆栈、更容易出错),但好的回溯算法结合了优秀的”截枝逻辑”,可以使算法效率提升非常多倍的同时,还能得到所有需要的解。总的来,当你想得到一种、多种甚至所有解的时候,使用穷举效率又太慢,这时回溯算法就是很好的选择。
- 跑胡子,就很适合用回溯法求解,一是因为当它有赖子牌(万能牌)时,会出现很多种不同的解。二是由于它复杂的算分系统。让求最优解(得分最高)成为一件较难的问题。
- 已实现c++版跑胡子胡牌算法,因算分规则复杂多变,本算法并不返回一个最优解,而是得到其中一个或所有解(指定最小胡息)。效率经测试:1ms以内。 https://github.com/pinorr/RunHuZi
- 还实现了十三水的求所有解的算法,以后再分享吧~
跑胡子胡牌算法(带赖子、基于回溯算法)相关推荐
- 跑胡子c语言算法,跑胡子胡牌算法Java版(带赖子、基于回溯算法)
跑胡子规则 跑胡子,小写"一"到"十"各4张共40张,大写"壹"到"拾"各4张共40张. 砌牌:跑胡子为3人同玩,庄家砌 ...
- 带赖子的麻将胡牌算法Java_带赖子的超高效麻将、跑胡子胡牌算法
文档 github地址 https://github.com/yuanfengyun/qipai/tree/master/doc lua版 https://github.com/yuanfengyun ...
- 带赖子的超高效麻将、跑胡子胡牌算法
腾讯课堂视频讲解:https://ke.qq.com/course/305608?tuin=104cb0e2 文档 github地址 https://github.com/yuanfengyun/qi ...
- 跑胡子c语言算法,跑胡子胡牌算法
1. 基于查表的lua版跑胡子判胡算法 将所有能胡的牌型和其对应的胡息放入表中 判断胡牌时,只需要查表得到胡息,如果表中没有此项,则不能胡,如果有,得到表中的胡息,加上跑.提.碰.偎的胡息,如果大于最 ...
- 麻将胡牌算法带癞子 python实现
姐姐:你去帮我和闺蜜打麻将? 学霸哥哥:可是我不会打麻将呀! 姐姐:你不是学霸吗?我教你一个麻将公式,我闺蜜可是单身哟! 学霸哥哥:什么公式? 姐姐:麻将胡牌公式: AAA*M+ABC*N+BB,WM ...
- 基于回溯算法的排班问题求解
基于回溯算法的排班问题求解 @[TOC](基于回溯算法的排班问题求解) 前言 一.排班问题抽象 二.回溯算法具体实现 1.函数主体 2.列元素求和 3.回溯算法 4.回溯算法出口函数 总结 前言 排班 ...
- 带赖子的麻将胡牌算法Java_有人讨论下麻将胡牌,出牌算法吗,求思路
前段时间学会了打麻将,觉得老祖宗的智慧真的博大精深,很好玩,食胡的时候真兴奋啊,于是空余时间就想自己写个麻将游戏出来,模仿欢乐麻将那种,数学差,想了两个礼拜才想出一个胡牌算法,前段时间学会了打麻将. ...
- C++带赖子的麻将听牌检测算法实现
#include <iostream> #include <vector> #include <set> #include <algorithm>enu ...
- 一篇带你搞透回溯算法
回溯算法应用场合 回溯算法和递归算法一般同时出现,一般递归算法的下面就是回溯的逻辑. 一般说递归函数,其实就是回溯函数.回溯一般不会单独出现. 回溯法其实是一个纯暴力的搜索算法.有些问题用for循环搜 ...
最新文章
- 【小白学PyTorch】4.构建模型三要素与权重初始化
- 推荐8个轻巧强大的办公工具,高效实用,不容错过
- spacy如何安装最匹配的版本正规文档en_core_web
- WLC HA-维护模式(Maintenance Mode)
- RHEL7.0系统相关配置
- mysql数据库云读取_云数据库 MySQL版
- Python_正则表达式入门(实例讲解)
- AnnotationConfigApplicationContext ad has not been refreshed yet 错误
- 如何通过ssh登录linux,如何用SSH登录linux?
- 时序图与状态图(Rose) - Windows XP经典软件系列
- MATLAB绘制奈奎斯特图:nyquist命令
- Android 手机开机密码破解锁定
- SSR(服务端渲染)
- 使用代理爬去微信公众号_微信公众号怎么去推广运营?企业微信公众号要如何运营?微信公众号运营技巧,你get了吗?微信怎么去推广运营?...
- android P OTA 初探 —— 1、OTA简单介绍
- SPSS案例分析3:因子分析
- 2021/12/01学习总结
- 5分钟学会撤池子 薄饼pancakeswap教程 撤销流通池图文课程
- KNIME服务器安装配置
- 1271:【例9.15】潜水员
热门文章
- php连接mysql 1045_连接mysql报1045错误怎么办
- 异型烟分拣 机器人_AGV自动备货模式在烟草商业分拣中心的应用
- java enumerator_java 中遍历取值异常(Hashtable Enumerator)解决办法
- 架构师内功心法-----手写springv2.0mvc
- 什么样的场景看不到反而更精彩?_数字体验_新浪博客
- 高并发场景的几种处理方法
- 初入算法———高斯算法
- bootstrap validator简单非空校验(data-bv-notempty)
- 【观察】安超OS的“一小步”,中国云的“一大步”
- CSS/HTML | 溢出滚动内容显示不全问题