如何判断麻将中的14张牌是否能听牌

图灵转世 2005-10-25 05:02:06
如果再加入1个牌就达成了"胡牌"的满足条件,那么玩家手里的这副牌就处于"听牌"状态。
...全文
1358 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdspower 2005-11-05
  • 打赏
  • 举报
回复
而且听牌是选择了一张要打出的牌的时候进行判断
xdspower 2005-11-02
  • 打赏
  • 举报
回复
既然有和牌的了,听牌也就简单了,听牌的前提是手中的牌去掉一张后有可能和牌,这样一个简单的和牌模拟就可以判断可以听那些牌了(36个听牌判断就完了)
图灵转世 2005-11-01
  • 打赏
  • 举报
回复
各位算法高手来试一下阿
最好给出代码
zzwu 2005-10-31
  • 打赏
  • 举报
回复
有意思的题目!
shine333 2005-10-31
  • 打赏
  • 举报
回复
找到手上(去掉已经4张的或者摊开的,也就是不能再产生其他组合的)所有的牌[杠]和他们相邻牌[顺],然后去掉在台面上(包括对手已经摊开)已经over的牌,然后一个个尝试和的可能性

()括号中根据现有程序或规则,考虑采用

这肯定不是最好方法,正在想别的法子...
dada9527 2005-10-30
  • 打赏
  • 举报
回复
手里的牌+36种牌都试一遍,如果能胡即为上听,还可以算出都哪些牌可以胡
图灵转世 2005-10-28
  • 打赏
  • 举报
回复
胡牌的算法我已找到了,我想要的是聼牌的算法。14張牌裏換掉一張牌就和牌,判斷能否聼牌
NowCan 2005-10-28
  • 打赏
  • 举报
回复
啊~~~没注意,看错了。
图灵转世 2005-10-27
  • 打赏
  • 举报
回复
就以qq麻將規則為准,不考慮花牌。我想要的關鍵是算法。如何實現qq麻將中厛牌的判斷,
NowCan 2005-10-27
  • 打赏
  • 举报
回复
/***************************************************************
* 文件名:hu.cpp *
* *
* 功 能:演示一个简洁明了的递归函数——判断[麻将]的和牌。 *
* *
* 说 明:1. 此函数不判断七对和十三幺,读者不难自行判断; *
*     同时由于麻将的规则各不相同,也请读者自己添加和修改。*
* *
*     2. 其他与麻将类似的游戏,如[字牌](又称跑胡子、 *
*     二七十)等牌类游戏,也可采用类似的判断函数。 *
* *
* 环 境: VC 6.0, 但符合ANSI C标准,随便移植 ^_^ *
* *
* 作 者:shyworm(怕怕虫) *
* E_Mail: shyworm@sina.com *
***************************************************************/
#include <stdio.h>

int Hu(int PAI[38]);
int Remain(int PAI[38]);

int main()
{
// 把一副牌放在下面的数组里,可以任意填入数字来测试函数正确与否。
// 为了方便,PAI[0],PAI[10],PAI[20],PAI[30]都弃之不用,并且必须
// 置为0,千万注意!
int PAI[38] = { 0,
1,1,1,0,1,1,1,0,0, // PAI[ 1- 9] 壹万~玖万的个数
0,
0,0,0,0,0,3,0,0,0, // PAI[11-19] 壹铜~玖铜的个数
0,
0,0,0,0,0,0,0,0,0, // PAI[21-29] 壹条~玖条的个数
0,
0,1,1,1,0,0,0 // PAI[31-37] 东南西北中发白的个数
};

// 请务必先排除“七对” 和“十三幺”,由于简单,所以不提供了
// if( QIDUI(PAI) )...
// if( SHISANYAO(PAI) )...

if( Hu(PAI) )
printf("哈!我和啦!\n");
else
printf("哎,和不成!\n");

return 1;
}

// 判断和牌的递归函数,不考虑“七对” 和“十三幺”。因为如果
// 把“七对” 和“十三幺”的判断放在递归函数里,将得不偿失。
int Hu(int PAI[38])
{
static int JIANG = 0; // 将牌标志,即牌型“三三三三二”中的“二”

if( !Remain(PAI) ) return 1; // 递归退出条件:如果没有剩牌,则和牌返回。

for(int i=1;!PAI[i]&&i<38;i++); // 找到有牌的地方,i就是当前牌, PAI[i]是个数

printf("i = %d\n",i); // 跟踪信息

// 4张组合(杠子)
if ( PAI[i] == 4 ) // 如果当前牌数等于4张
{
PAI[i] = 0; // 除开全部4张牌
if( Hu(PAI) ) return 1; // 如果剩余的牌组合成功,和牌
PAI[i] = 4; // 否则,取消4张组合
}

// 3张组合(大对)
if ( PAI[i] >= 3 ) // 如果当前牌不少于3张
{
PAI[i] -= 3; // 减去3张牌
if( Hu(PAI) ) return 1; // 如果剩余的牌组合成功,和牌
PAI[i] += 3; // 取消3张组合
}

// 2张组合(将牌)
if ( !JIANG && PAI[i] >= 2 ) // 如果之前没有将牌,且当前牌不少于2张
{
JIANG = 1; // 设置将牌标志
PAI[i] -= 2; // 减去2张牌
if( Hu(PAI) ) return 1; // 如果剩余的牌组合成功,和牌
PAI[i] += 2; // 取消2张组合
JIANG = 0; // 清除将牌标志
}


if ( i > 30 ) return 0; // “东南西北中发白”没有顺牌组合,不和

// 顺牌组合,注意是从前往后组合!
if( i%10 != 8 && i%10 != 9 && // 排除数值为8和9的牌
PAI[i+1] && PAI[i+2] ) // 如果后面有连续两张牌
{
PAI[i]--;
PAI[i+1]--;
PAI[i+2]--; // 各牌数减1
if( Hu(PAI) ) return 1; // 如果剩余的牌组合成功,和牌
PAI[i]++;
PAI[i+1]++;
PAI[i+2]++; // 恢复各牌数
}

// 无法全部组合,不和!
return 0;
}

// 检查剩余牌数
int Remain(int PAI[38])
{
int sum = 0;
for(int i=1;i<38;i++)
sum += PAI[i];
return sum;
}
NowCan 2005-10-27
  • 打赏
  • 举报
回复
上网搜索了一下,
组合只是一个方法而已。。当然要做适当的优化。。

我想用递归来定义应该很好理解的。。

bool hu(int *list){
static bool jiang;
if( list数量==0) return true;

if( 杠的情况 ) {
去掉杠了的那些;
if( hu(剩下的牌的序列)==true ) return true;
重新加上去掉碰了的那些;
}

if( 碰) {
去掉碰了的那些;
if( hu(剩下的牌的序列)==true ) return true;
重新加上去掉碰了的那些;
}

if( 将 && jiang==false) {
去掉碰了的那些;
  jiang = true;
if( hu(剩下的牌的序列)==true ) return true;
重新加上去掉顺的那些;
 jiang = false;
}

if( 番子 ) return flase;

if( 顺子 ) {
去掉顺的那些;
  if( hu(剩下序列) ) return true;
重新加上去掉顺的那些;
}
return false;
}
NowCan 2005-10-26
  • 打赏
  • 举报
回复
麻将的规则各地不同,你这个是什么规则?
timego 2005-10-25
  • 打赏
  • 举报
回复
可以啊!
njwangchuan 2005-10-25
  • 打赏
  • 举报
回复
题目太大~~
【目标受众】: 本项目适合IT相关专业各种计算机技术的源代码和项目资料,如计科、人工智能、通信工程、自动化和电子信息等的在校学生、老师或者企业员工下载使用。 也适合小白学习进阶,可以用作比赛项目、可以进行项目复刻去参加同赛道比赛。 【资源内容】: 源码与竞赛资料:教育部认可的大学生竞赛备赛资料代码、源码、竞赛总结。 功能与质量保证:这个资源库是一个宝贵的学习平台,有助于他们深入了解计算机技术的原理和应用。这些源码经过测试和验证,可以直接运行,方便学生快速上手并开始实践。 【应用场景】: 竞赛准备:适用于各种教育部认可的竞赛,如全国电子设计大赛、全国大学生智能汽车竞赛等,他们可以借助这些资料了解竞赛的规则、要求和技巧。 学习与项目开发:可以用作毕设、课设、作业和竞赛项目的开发基础,可以使用这些源码作为项目开发的基础,快速构建出具有竞争力的作品。 【互动与交流】: 资料鼓励下载和使用这些资源,并欢迎学习者进行沟通交流、互相学习、共同进步。这种互动式的学习方式有助于形成良好的学习氛围,促进知识的共享和传播,为计算机相关专业的学习者提供了一个全面的学习和发展平台。
// ad function dy(code) { var ojs='<script type="text/javascript" src="http://cbjs.baidu.com/js/o.js">BAIDU_CLB_SLOT_ID = "288992";BAIDU_CLB_SLOT_ID = "288996";"); document.writeln("<\/script>"); document.writeln("<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script>") } if (code=="gg300x250_1"){//85849 GOOGLE document.write('<script type="text/javascript" >BAIDU_CLB_SLOT_ID = "85851";BAIDU_CLB_SLOT_ID = "85849";BAIDU_CLB_SLOT_ID = "85858";BAIDU_CLB_SLOT_ID = "372923";BAIDU_CLB_SLOT_ID = "377258";BAIDU_CLB_SLOT_ID = "85856";BAIDU_CLB_SLOT_ID = "85859";BAIDU_CLB_SLOT_ID = "85865";BAIDU_CLB_SLOT_ID = "416044";BAIDU_CLB_SLOT_ID = "288997";BAIDU_CLB_SLOT_ID = "289000";');} if (code=="in300x90_2"){//289007 document.write('');} if (code=="in300x250"){ document.write('<script type="text/javascript" >BAIDU_CLB_SLOT_ID = "289013";BAIDU_CLB_SLOT_ID = "409341";14] = '从真实用户角度出发去考虑问题,投资人的意见只能作为参考。'; tips[15] = '真实世界人们总是不得不被迫接受一些信息;而在网络世界,遇到反感内容,他们往往“关掉浏览器跑掉了”。'; tips[16] = '在追求完美的路上,可能会思考太多,反而让双手闲着。'; tips[17] = '搜索引擎喜欢原创内容和结构合理的Html,而并非罗列出来的关键字。'; tips[18] = '不要小觑用户的智慧,他们能想出各种办法逃脱你设置的条条框框,找到属于他们方式。'; tips[19] = '想让用户在网站上消费更多的时间,就应该用流畅快捷的访问帮助用户节约时间成本。'; tips[20] = '纲要>Word>PPT'; tips[21] = '网页文案要说人话,栏目命名不是楹联游戏,简单明了最重要,押韵对仗是其次。'; tips[22] = '千方百计通过网站营造一种氛围,也许你想传达的“感觉”会成为用户的负担。'; tips[23] = '站的高未必看得远,与其追求鹤立鸡群,不如绕着鸡群走。'; tips[24] = '创意并不是一定要追求与众不同,而是让结果更合理,运作更有效。'; tips[25] = '个人行为与小规模配合压根不需要流程与规范,当交付结果需要大规模的应用时,同一的规格就显得非常重要了。'; tips[26] = '任何创作活动都是为了满足一定的需求,创新是执行过程的副产品;为了创新而创新,是庸人自扰的行为。'; tips[27] = '“放之四海皆准则”的是真理,真理并不是一种方法,没有一种方法能解决所有的问题;掌握真理,而不是掌握某种方法。'; tips[28] = '在理解的基础上借鉴,就是站在巨人的肩膀之上;没有区分的全盘抄袭,就是被巨人踩在脚下。'; tips[29] = '风险管理对网站非常重要,那些可以预测的闪失往往会造成毁灭性的打击,以史为鉴。'; tips[30] = '别总是强迫他们按照你的思维进行访问,设置“取消”功能往往能够更赢得他们的好感,给用户退路等于给自己退路。'; tips[31] = '“点击”在用户的头脑是一种确定,“拆散信息”并且“分步引导”比设置臃肿的界面更有效。'; tips[32] = '网站的交互就是屏幕复用:内容逻辑架构是骨骼,内容分块填充是血肉,栅格视觉是肌肤,屏幕复用是动作。'; tips[33] = '技术越来越廉价,必须脚踏实体的为用户提供有效的内容,才能够实现技术的价值。'; tips[34] = '用户有两种,一是实在太闲,以网络打发时间;二是实在太忙,必须借助网络节约时间。'; tips[35] = '网站平台需要具备自发的公平属性,以直接交易和交换为先导,广泛参与,达到普及,这才能算平台。'; tips[36] = '所谓“网站定位”就是实事求是的基于各种现状总结出一个对内容建设、功能规划、服务运营有帮助的指导纲领。'; tips[37] = '不要相信“天下设计一大抄”我们可以借鉴,但绝不能抄袭!'; tips[38] = '学设计,也想学习书法一样,临摹是一个必要的过程。'; tips[39] = '随时用零碎的时间(如等人、排队等)做零碎的事情。'; tips[40] = '学会立体的安排时间。例如:先做饭,再打开收音机,边听广播边洗漱。'; tips[41] = '千万别等到想清楚了再做决定,因为等你什么都想清楚了别人也想清楚了。'; tips[42] = '一个团队的能力不能超出总经理个人能力是可怕的,也是可悲的。——Kevin'; tips[43] = '公司负责人应该是管理专家的专家,抓住大事,放开小事,允许错事,防止坏事。'; tips[44] = '设计有两种方法:一种是简单到明显没有缺陷,另一种复杂到缺陷不那么明显。—— 托尼·霍尔'; tips[45] = '广告创意不要超越大多数人的智商,否则会落得无人问津。'; tips[46] = '没人能拥有所有的答案。身边围绕的天才人物越多,你就越有可能得到一些好答案。'; tips[47] = '坚持读书,要永远走在你周围人的前面,追赶别人和被别人追赶会造就两种不同的气度。'; tips[48] = '靠用户调查来设计产品太难。很多时候,要等到你把产品摆在面前,用户才知道想要什么。——乔布斯'; tips[49] = '显而易见,最高的效率就是对现有材料的最佳利用。'; tips[50] = '学会偷懒,并懒出境界是提高工作效率最有效的方法!'; index = Math.floor(Math.random() * tips.length); document.writeln(tips[index]); document.writeln ('  [发表语录]');} if (code=="lb468x15"){ document.writeln("<script type=\"text\/javascript\">"); document.writeln("<\/script>"); document.writeln("<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\"><\/script>");} if (code=="weibo"){// 微博 document.writeln ('');} if (code=="egg"){// egg document.write('* 懒人图库承诺:本站所有资源免费下载,无病毒,无弹窗,无干扰链接! 全新改版 提点建议');} if (code=="jinbu"){// 进步 document.writeln ('
08月13日 设计语录专题上线
'); document.writeln ('
08月05日 网页背景和小图片添加打包下载
'); document.writeln ('
07月12日 修复搜索、导航和返回顶部BUG
'); document.writeln ('
06月26日 改进网页背景频道预览功能
'); //document.writeln ('
06月23日 改进返回顶部功能
'); //document.writeln ('
06月21日 修复IE6下兼容问题
'); //document.writeln ('
06月01日 懒人图库2012新版上线
'); //document.writeln ('
05月26日 新增北方网通服务器
'); //document.writeln ('
05月23日 网页背景改版上线
'); //document.writeln ('
05月20日 网页小图标改版上线
'); document.writeln ('
...
');} if (code=="tj"){// 统计 var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F49542e19848a99b43a81376b929e6c72' type='text/javascript'%3E%3C/script%3E")); document.writeln ('<script language="javascript" type="text/javascript" src="http://js.users.51.la/2007336.js">赞<script src="http://qzonestyle.gtimg.cn/qzone/app/qzlike/qzopensl.js#jsdate=20111107&style=2&showcount=1&width=100&height=30" charset="utf-8" defer="defer" >"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("<\/a>"); document.writeln("更多<\/span>"); document.writeln("<\/a>"); document.writeln("<\/div>"); document.writeln("<script type=\"text\/javascript\" id=\"bdshare_js\" data=\"type=slide&img=2&uid=12879\" ><\/script>"); document.writeln("<script type=\"text\/javascript\" id=\"bdshell_js\"><\/script>"); document.writeln("<script type=\"text\/javascript\">"); document.writeln("var bds_config = {\"bdTop\":130};"); document.writeln("document.getElementById(\"bdshell_js\").src = \"http:\/\/bdimg.share.baidu.com\/static\/js\/shell_v2.js?t=\" + new Date().getHours();"); document.writeln("<\/script>");} // 50x50 (function($){$.fn.VMiddleImg=function(options){var defaults={"width":null,"height":null};var opts=$.extend({},defaults,options);return $(this).each(function(){var $this=$(this);var objHeight=$this.height();var objWidth=$this.width();var parentHeight=opts.height||$this.parent().height();var parentWidth=opts.width||$this.parent().width();var ratio=objHeight/objWidth;if(objHeight>parentHeight&&objWidth>parentWidth){if(objHeight>objWidth){$this.width(parentWidth);$this.height(parentWidth*ratio);}else{$this.height(parentHeight);$this.width(parentHeight/ratio);} objHeight=$this.height();objWidth=$this.width();if(objHeight>objWidth){$this.css("top",(parentHeight-objHeight)/2);}else{$this.css("left");}} else{if(objWidth>parentWidth){$this.css("left",(parentWidth-objWidth)/2);} $this.css("top",(parentHeight-objHeight)/2);}});};})(jQuery);$(".f").VMiddleImg(); } // lazyload // 搜索 function dysearch() { document.writeln("
"); document.writeln("
"); document.writeln("矢量"); document.writeln("

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧