社区
数据结构与算法
帖子详情
如何判断麻将中的14张牌是否能听牌
图灵转世
2005-10-25 05:02:06
如果再加入1个牌就达成了"胡牌"的满足条件,那么玩家手里的这副牌就处于"听牌"状态。
...全文
1403
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种( 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
基于深层神经网络预测日本
麻将
立直
听牌
情况
资源下载链接为: https://pan.quark.cn/s/cbbd33d6733a 基于深层神经网络预测日本
麻将
立直
听牌
情况(最新、最全版本!打开链接下载即可用!)
基于深度神经网络的日本
麻将
站立式
听牌
预测.zip
基于深度神经网络的日本
麻将
站立式
听牌
预测
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章