社区
数据结构与算法
帖子详情
如何判断麻将中的14张牌是否能听牌
图灵转世
2005-10-25 05:02:06
如果再加入1个牌就达成了"胡牌"的满足条件,那么玩家手里的这副牌就处于"听牌"状态。
...全文
1391
14
打赏
收藏
如何判断麻将中的14张牌是否能听牌
如果再加入1个牌就达成了"胡牌"的满足条件,那么玩家手里的这副牌就处于"听牌"状态。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
题目太大~~
Go-
麻将
算法封装包括牌墙算法
听牌
算法胡牌算法出牌推荐算法
麻将
算法封装,包括牌墙算法、
听牌
算法、胡牌算法、出牌推荐算法
vb
麻将
分析器,用于分析13张
麻将
听什么些牌
编写
麻将
软件的副产品,用于分析13张
麻将
听什么些牌
基于 python的深层神经网络预测日本
麻将
立直
听牌
【作品名称】:基于 python的深层神经网络预测日本
麻将
立直
听牌
【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 数据增强 只用这些牌谱数据看起来还有些不够,训练出的结果不是很理想。考虑可以这样生成一些假的牌谱。将
中
、发、白以某种顺序置换;将饼、万、索以某种顺序置换;将123456789变成987654321。这样的变换不能保证是完全合理的。一个原因是绿一色导致索和饼、万并不是完全等价的,但考虑到绿一色出现的概率如此的低就不管了。另一个原因是宝牌的问题,比如原来的宝牌指示牌是1m,宝牌是2m。如果进行了123456789变成987654321,宝牌就会变成8m;这时宝牌指示牌并不能变成9m,而变成了7m。这两个问题不能很好解决,但为了获得更多的牌谱,还是进行了这几种置换。
中
发白的置换共6种,饼万索的置换共6种,数字颠倒共2种( 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
基于深度神经网络的日本
麻将
站立式
听牌
预测.zip
基于深度神经网络的日本
麻将
站立式
听牌
预测
长沙
麻将
算法和AI源代码
使用链表和STL做的长沙
麻将
算法和AI的源代码,一共有4个版本,都没有写完。 毕竟真正完成的版本是商业代码了。 不过其
中
很多代码和思想都被后面的完成版本所使用,希望对想搞棋牌游戏开发的人有用。
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章