只考虑最简单的胡牌 一对将(对子)+4个坎(四个连顺子  123 456  或四个一样的111 222 或者两者之间的组合)

// 将麻将抽象为数字//数字//{01 ~ 09} 表示  {1 ~ 9}  筒//数字 {11 ~ 19} 表示  {1 ~ 9} 条//数字 {21 ~ 29} 表示  {1 ~ 9} 万//数字 {31 33 35 37 } 表示 { 东 南 西 北 }//数字 {41 43 45} 表示 {中 發 白}//数字10 20 30 32 34 36 40 42 44 46 空出来不代表任何麻将牌 这样设计的好处就是使得能够形成顺子的牌在用数字表示出来的时候刚好也是连着的, 而不能够形成顺子的牌, 在用数字表示的时候并不是顺子 . 便于以后使用代码进行判断
// shoupai 手上的牌(不包含打出的) Id 摸的牌 或者别人放的炮
public static bool IsCanhu(List<int>mah,int Id)
{List<int> shouPai = new List<int>(mah);shouPai.Add(Id);if(shouPai.Count==2){return shouPai[0]==shouPai[1];}//先对手牌进行排序shouPai.Sort();//查找牌中的对子for(i = 0;i<shouPai.Count;i++){//定义剩余的牌List<int> remain = new List<int>(shoouPai);List<int> ds = shouPai.FindAll(delegate(int d){return  shouPai[i] == d;});}if(ds.Count>=2){remain.Remove(shouPai[i]);remain.Remove(shouPai[i]);}//为了避免重复记牌 将光标移到下一个牌中i += ds.Count;}public static bool HuPai(List<int> remain){if(remain.Count==0){return true;}List<int> cs = remain.FindAll(delegate(int a ){return remain[0] == a;});if(cs.Count==3){remain.Remove(remain[0]);remain.Remove(remain[0]);remain.Remove(remain[0]);return HuPai(remain);}else if(remain.Contains(remain[0])+1&&remain.Contains(remain[0])+2){remain.Remove(remain[0]);remain.Remove(remain[0]+1);remain.Remove(remain[0]+2);return HuPai(remain);}return false;}
//测试用例static void Main(string[] args){List<int> list = new List<int>();list.Add(1);list.Add(1);list.Add(3);list.Add(4);list.Add(5);list.Add(11);list.Add(11);list.Add(11);list.Add(23);list.Add(23);list.Add(23);list.Add(19);list.Add(19);int ID = 19;Console.WriteLine(IsCanHu(list,ID));}

Unity简单麻将胡牌算法相关推荐

  1. 麻将胡牌算法带癞子 python实现

    姐姐:你去帮我和闺蜜打麻将? 学霸哥哥:可是我不会打麻将呀! 姐姐:你不是学霸吗?我教你一个麻将公式,我闺蜜可是单身哟! 学霸哥哥:什么公式? 姐姐:麻将胡牌公式: AAA*M+ABC*N+BB,WM ...

  2. 可带癞子的通用麻将胡牌算法

    本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章.觉得好的话,顺手分享到朋友圈吧,感谢支持. 笔者前段时间做过一款地方麻将 ...

  3. 麻将胡牌算法——C#

    这里只介绍普通的麻将胡牌算法,也就是7个对子或者 1个对子+3*N; N = 三个顺子或者三个一样的 ,其中字牌(东南西北中发白)不能算顺子. 首先对于每张牌 它有牌的的数字 1-9,牌的种类 (万条 ...

  4. 麻将胡牌算法(遍历+剪枝)

    麻将胡牌算法(遍历+剪枝) 简介 麻将胡牌算法及代码 1. 方法引入 2. 类型定义 2.1 牌定义 2.2 牌特征定义 3. 计算胡牌 3.1 检测十三幺牌型 3.2 检测七小对牌型 3.3 检测普 ...

  5. 麻将胡牌算法 极速(速度接近理论极限)

    此麻将胡牌算法优点: 1.可处理多赖子牌(万能牌) 2.算法速度极快:1ms可大约计算1W+副手牌是否可胡(带赖子.0.08us左右),不带赖子的牌型更快.(最新版的算法速度感觉已很接近理论极限值) ...

  6. 麻将 胡牌 算法(任意癞子)

    分享一个麻将胡牌算法,支持多癞子,自己对麻将胡牌的理解写的一套快速识别胡牌逻辑,核心逻辑500行代码,仅对同条万进行处理,字花牌不包含在内,易理解,1M次随机胡牌牌型大概3秒左右.原创分享,我的算法也 ...

  7. Unity3D 通用麻将胡牌算法

    https://blog.csdn.net/qq_38064109/article/details/78933589 正常的麻将胡牌方式为满足N * ABC + M *DDD +EE 的形式,及存在一 ...

  8. 包含癞子的麻将胡牌算法

    记录一下麻将的通用胡牌算法实现,只要满足M x ABC + N x DDD + EE 即可胡牌. 在这里先分析一下最简单的胡牌思路:先找出所有可能的将牌,若除去两张将牌之外的所有牌都能成扑,则可胡牌. ...

  9. 带赖子的麻将胡牌算法Java_有人讨论下麻将胡牌,出牌算法吗,求思路

    前段时间学会了打麻将,觉得老祖宗的智慧真的博大精深,很好玩,食胡的时候真兴奋啊,于是空余时间就想自己写个麻将游戏出来,模仿欢乐麻将那种,数学差,想了两个礼拜才想出一个胡牌算法,前段时间学会了打麻将. ...

  10. 麻将胡牌算法的一种设计及其分析

    马勇波  陈欣庆 (解放军理工大学工程兵工程学院研究生二队,南京 210007)       摘  要  文章通过一个二维数组定义麻将的数据结构,并在此基础上设计了一种判断麻将是否胡牌的算法,该算法主 ...

最新文章

  1. 第三章:3.6 典型信号傅里叶变换
  2. JDBC——入门知识【转】
  3. 微盘 计算机英语,高中英语,微盘.doc
  4. 用什么写php最好用,php用什么开发工具比较好
  5. 积性函数(Product_Function)
  6. 红帽子linux改ip命令,RedHat 7 修改IP地址
  7. 【转】ITK和VTK比较
  8. python 网络编程 异步io_异步IO实现 小例(程序+驱动程序)
  9. r语言集合补集_R语言学习笔记(14)-常用包
  10. (办公)eclipse连接github cannot open git-upload-pack(git-receive-pack)
  11. 快速学会php视频,PHP视频从入门到精通---适合PHP初学者
  12. PE格式详细讲解5 - 系统篇05|解密系列
  13. .NET实现在Word指定页码之间插入另一个Word
  14. 服务器性能检测器,Linux服务器性能检测工具之 collectl
  15. Android多媒体技术(二)浅析Camera视频实时采集中涉及的参数配置
  16. 网贷逾期会有什么后果,又如何解决呢?
  17. JavaWeb项目开发案例精粹-第4章博客网站系统-003Dao层
  18. word中的神奇的“Alt + X”
  19. 豆腐的做法与编辑的文风
  20. 微信订阅号实现自动赚钱机器人

热门文章

  1. java.sql.SQLException: Access denied for user ‘crm‘@‘localhost‘ (using password: YES)
  2. Es,N0,EsN0,EbN0,SNR关系详解
  3. 嵌入式学习笔记7——LCD1602液晶屏
  4. 5 款常用的 C++ 在线编译器推荐
  5. 下厨房(istringstream的使用)----网易2017内推笔试编程题合集
  6. 干货 | 云智慧透视宝Java代码性能监控实现原理
  7. 基于Netty的RPC架构学习笔记(五):netty线程模型源码分析(二)
  8. 【视野】中国的程序员培训是不是有问题?
  9. 基于纠错编码的数字水印matlab,method robustness是什么意思
  10. java实现空心三角形