https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2151

http://7xjob4.com1.z0.glb.clouddn.com/f1186ae9a93d903ab533e5fce524bac6

题意:给你一副手牌,输出这手牌所有的听牌

思路:枚举所有34种牌,依次判断是否听这牌,先枚举选出将,再枚举顺子、刻子等,递归判断。

  1 #include <bits/stdc++.h>
  2 using namespace std;
  3
  4 const char *mahjong[]={
  5 "0",
  6 "1T","2T","3T","4T","5T","6T","7T","8T","9T",
  7 "1S","2S","3S","4S","5S","6S","7S","8S","9S",
  8 "1W","2W","3W","4W","5W","6W","7W","8W","9W",
  9 "DONG","NAN","XI","BEI",
 10 "ZHONG","FA","BAI",
 11 };
 12
 13 int n;
 14 int mj[15],c[35];
 15
 16 int mjid(char str[])
 17 {
 18     int i,j;
 19     for(i=1;i<=34;i++)
 20     {
 21         if(strcmp(mahjong[i],str)==0)
 22         {
 23             return i;
 24         }
 25     }
 26 }
 27
 28 int Search(int m)
 29 {
 30     int i,j;
 31     for(i=1;i<=34;i++)
 32     {
 33         if(c[i]>=3)
 34         {
 35             if(m==4)    return 1;
 36             c[i]-=3;
 37             if(Search(m+1)==1)  return 1;
 38             c[i]+=3;
 39         }
 40     }
 41     for(i=1;i<=25;i++)
 42     {
 43         if(i%9<=7 && i%9!=0 && c[i]>=1 && c[i+1]>=1 && c[i+2]>=1)
 44         {
 45             if(m==4)    return 1;
 46             c[i]--,c[i+1]--,c[i+2]--;
 47             if(Search(m+1)==1)  return 1;
 48             c[i]++,c[i+1]++,c[i+2]++;
 49         }
 50     }
 51     return 0;
 52 }
 53
 54 int hu()
 55 {
 56     int i,j;
 57     for(i=1;i<=34;i++)
 58     {
 59         if(c[i]>=2)
 60         {
 61             c[i]-=2;
 62             if(Search(1)==1)
 63                 return 1;
 64             c[i]+=2;
 65         }
 66     }
 67     return 0;
 68 }
 69 int main()
 70 {
 71     int i,j;
 72     char str[10];
 73     int cas=1;
 74     while(scanf("%s",str)!=EOF)
 75     {
 76         if(str[0]=='0')
 77             break;
 78
 79         mj[1]=mjid(str);
 80         for(i=2;i<=13;i++)
 81         {
 82             scanf("%s",str);
 83             mj[i]=mjid(str);
 84         }
 85
 86         printf("Case %d:",cas++);
 87
 88         bool flg=false;
 89         for(i=1;i<=34;i++)
 90         {
 91             memset(c,0,sizeof(c));
 92             for(j=1;j<=13;j++)
 93                 c[mj[j]]++;
 94             if(c[i]>=4)  continue;
 95
 96             c[i]++;
 97             if(hu()==1)
 98             {
 99                 flg=true;
100                 printf(" %s",mahjong[i]);
101             }
102             c[i]--;
103         }
104
105         if(!flg)
106             printf(" Not ready");
107         printf("\n");
108     }
109     return 0;
110 }

View Code

转载于:https://www.cnblogs.com/cyd308/p/5644788.html

UVA 11210 中国麻将相关推荐

  1. 麻将开金算法java代_中国麻将(Chinese Mahjong, UVa 11210)【JAVA算法实现】

    题目描述麻将是一个中国原创的4人玩的游戏.这个游戏有很多变种,但本题只考虑一种有136张牌的玩法.这136张牌所包含的内容如下.饼(筒)牌:每张牌包括一系列 题目描述 麻将是一个中国原创的4人玩的游戏 ...

  2. UVA 11210 Chinese Mahjong

    UVA_11210 一开始觉得这个题目比较麻烦便有点胆怯,后来鼓起勇气开始编之后,发现其实只要把每种情况考虑周全并且回溯得当的话还是不难的. 深搜中间之所以把eye设成全局变量并且放在return语句 ...

  3. [补档]从OI学麻将

    背景 作为一名川娃子,怎么能不懂麻将呢= = T1 さきなに~~ [咲 -Saki-] 天才麻将少女什么编 题目 二十一世纪,世界上的麻将竞技人数超过一亿,日本每年也有大规模的全国大赛来对麻将选手进行 ...

  4. 雀友腾讯跨界联合 北京打造全球顶级麻将锦标赛

    北京2018年7月30日电 /美通社/ -- 7月28-29日,雀友.腾讯强强联手举办的2018TMT腾讯麻将锦标赛国标夏季赛在首都北京举行,麻将锦标赛是由腾讯游戏与腾讯棋牌主办,腾讯欢乐麻将.麻将机 ...

  5. 我写了个“女朋友”陪自己打麻将……

    序 一个月黑风高的晚上,我正坐在工位的电脑前精力充沛的疲倦不已的写着bug. 突然,一通备注着"小仙女"的电话打了过来,我一看赶紧接通了女朋友的电话. 电话那边传来温柔的声音&qu ...

  6. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

  7. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  8. 麻省、北大、清华等顶尖高校与企业 20 位强化学习专家齐聚,RLChina 2021 强化学习暑期课免费报名啦!

    2016 年,AlphaGo 宛然横空出世,凭借精湛的棋艺接连战胜韩国围棋九段棋手李世石.中国围棋九段棋手柯洁之后,更是以 60 局无败绩的成绩轰动整个科技圈,人工智能的新纪元也因此开启.站在技术角度 ...

  9. 麻省、北大、清华等顶尖高校与企业 20 位强化学习专家齐聚,RLChina 2021 强化学习暑期课免费报名啦!...

    2016 年,AlphaGo 宛然横空出世,凭借精湛的棋艺接连战胜韩国围棋九段棋手李世石.中国围棋九段棋手柯洁之后,更是以 60 局无败绩的成绩轰动整个科技圈,人工智能的新纪元也因此开启.站在技术角度 ...

最新文章

  1. jieba分词的使用
  2. Ado.net类与对象
  3. 解决Eclipse中文乱码的方法
  4. php rpc连接Python,PHP语言之Python、PHP通过xml-rpc进行通信,xml-rpc中文的解决
  5. Python+Opencv实现模板匹配
  6. PYTHON 爬虫笔记十一:Scrapy框架的基本使用
  7. 死亡搁浅运送系统服务器,死亡搁浅订单23寻物系统服务器流程介绍-死亡搁浅订单23寻物系统服务器怎么做_牛游戏网...
  8. visio防火墙可以连接什么_画流程图,就是要用Visio软件!
  9. win11网络怎么优化 Windows11优化网速的步骤教程
  10. 腾讯裁员内幕:顶层反思推动,PCG与CSIG影响最大
  11. sigmoid激活函数
  12. 原画学习步骤,零基础一步步学原画!
  13. 汇编程序求助,window.inc报错
  14. 计算机无法显示硬盘盘符,移动硬盘连接电脑不显示盘符怎么回事?移动硬盘连接电脑不显示盘符的原因和解决方法...
  15. JAVA打印十年母亲节,母亲节 一封推迟了十年的信
  16. 后端---史上最全最小白最简单最细致的Java接入微信支付接口(Native接入)
  17. _poto_和prototype的问题续集
  18. 分分钟解决OSPF配置问题
  19. 数据预处理--上采样(过采样)与下采样(降采样)
  20. LuaForWindows(SciTE) 5.1 常见问题

热门文章

  1. 堆(Heap)大根堆、小根堆
  2. 基于EasyNVR二次开发实现业务需求:用户、权限、设备管理
  3. 2017年4月19日
  4. 系统中异常公共处理模块 in spring boot
  5. BusyBox telnet配置
  6. CSS3 Media Queries在iPhone4和iPad上的运用
  7. 利用VC检测程序内存溢出(转)
  8. MFC对话框中处理Enter或Esc按键事件方法
  9. Android—Bitmap图片大小计算、压缩与三级缓存
  10. linux 关掉蓝牙自动,如何在Ubuntu 14.04中默认关闭蓝牙,蓝牙