资源简介

通过递归的算法实现四川麻将的胡牌算法,这里讲所有的牌进行排序,并调用递归的算法,判定这十四张牌是否能胡,能够成功运行。

资源截图

代码片段和文件信息

// Mahjong.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“

/************************************************************************
排序:将条万筒分别排序,并保存在原有的数组中
************************************************************************/
void sort(char *pint n)
{
int ij;
char temp;
if (n < 2)  return;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if(p[j]>p[j+1]) 
{
temp = p[j];
p[j] = p[j+1];
p[j+1] = temp;
}
}
}
return ;
}

/*******************************************************************************
找出相同的三个连续的牌,如果找到就剔除这三个牌,并返回真,
传递进来的数组元素比原来少了3个
如果没有,返回假
*******************************************************************************/
bool Group3Same(char *pint n)
{

char * q;
int sp=0;
int ij;
q = p;
if (n == 0)
{
return true;
}
for(i = 0; i < n - 2; i++)
{
if (*(q + i + 1) == *(q + i)&& *(q + i + 2) == *(q + i + 1))
{
if (i == n - 3 ) //把这三个元素移除,把后面的元素往前移动三格
{
*(q+i) = ‘\0‘;
p = q;
return true;
}
else
{
for (j = i;j < n - 3; j++)
{
*(q + j)  =  *(q + j + 3) ;
}
*(q+j) = ‘\0‘;
p = q;
return true;
}
}
}
return false;
}

/*******************************************************************************

找出顺子,没找到一组顺子就把顺子剔除,最后,返回数组中剩余的元素的个数,如果返回值为0,
能够组合成若干个顺子,可以胡牌,否则,不能组合成顺子,不能胡牌

*******************************************************************************/
int Group3Shunzi(char *pint n)
{
char *q*w;
int ijkmlsp = 0;
m=0;
q = p;
w = p;
if ( n == 0)
{
return 0;
}
for(i = 0; i < n - 2; i++)
{
for (j = i+1;j < n - 1; j++ )
{
if (*(q + j) - *(q + i) == 1)
{
for (k = j + 1; k < n ; k++ )
{
if (*(q + k) - *(q + j) == 1)
{

if (i == n - 3 ) //把这三个元素移除,把后面的元素往前移动三格
{
*(q+i) = ‘\0‘;
n -= 3;
i--;
break;
}
else
{
*(q + i) = ‘0‘;
*(q + j) = ‘0‘;
*(q + k) = ‘0‘;
for (m = 0l = 0;l < n ; l++)
{
if (*(q + l) != ‘0‘)
{
*(w + (m++)) = *(q + l);
}
}
n = m;
q = w;
i--;
break;
}
}
}
}
continue;
}
}
return  n;
}

/************************************************************************

递归调用组合函数
每次先进行顺子组合,若不能成功,再进行三个相同的组合
找到一组三个相同的组合,在递归调用本函数,不断的进行顺子-三个相同 顺子-三个相同
递归的次数不会超过四次,因为只有12张牌,每一次找到三个相同的牌,都会减少三张牌

************************************************************************/
bool Group3S(char *p int n)

char pp[14]p2[14];
int ij;

for (i = 0;i < n;i++)
{
pp[i] = *(p + i);
p2[i] = *(p + i); 
}
bool flag = false;
if (n == 0)
{
return true;
}
if(!Group3Shunzi(pn))
return true;
if (Group3Same(p2n)) //顺子出错,就看看有没有三个相同的,有就把三个相同的挑出来,在进行顺子算法
{
n -= 3;
flag = Group3S(p2n);
}
return flag;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2012-09-10 16:31  Mahjong\
     目录           0  2012-09-10 16:31  Mahjong\Debug\
     文件       33792  2012-09-10 16:31  Mahjong\Debug\Mahjong.exe
     文件      309368  2012-09-10 16:31  Mahjong\Debug\Mahjong.ilk
     文件      461824  2012-09-10 16:31  Mahjong\Debug\Mahjong.pdb
     目录           0  2012-09-10 16:31  Mahjong\Mahjong\
     文件      486400  2012-09-10 16:31  Mahjong\Mahjong.ncb
     文件         887  2012-09-10 16:30  Mahjong\Mahjong.sln
     文件       12800  2012-09-10 16:31  Mahjong\Mahjong.suo
     目录           0  2012-09-10 16:31  Mahjong\Mahjong\Debug\
     文件       12298  2012-09-10 16:31  Mahjong\Mahjong\Debug\BuildLog.htm
     文件         663  2012-09-10 16:31  Mahjong\Mahjong\Debug\Mahjong.exe.embed.manifest
     文件         728  2012-09-10 16:31  Mahjong\Mahjong\Debug\Mahjong.exe.embed.manifest.res
     文件         621  2012-09-10 16:31  Mahjong\Mahjong\Debug\Mahjong.exe.intermediate.manifest
     文件       14564  2012-09-10 16:31  Mahjong\Mahjong\Debug\Mahjong.obj
     文件     3211264  2012-09-10 16:31  Mahjong\Mahjong\Debug\Mahjong.pch
     文件          67  2012-09-10 16:31  Mahjong\Mahjong\Debug\mt.dep
     文件       12193  2012-09-10 16:31  Mahjong\Mahjong\Debug\stdafx.obj
     文件       68608  2012-09-10 16:31  Mahjong\Mahjong\Debug\vc90.idb
     文件      126976  2012-09-10 16:31  Mahjong\Mahjong\Debug\vc90.pdb
     文件        6152  2012-09-10 16:31  Mahjong\Mahjong\Mahjong.cpp
     文件        4498  2012-09-10 16:30  Mahjong\Mahjong\Mahjong.vcproj
     文件        1427  2012-09-10 16:31  Mahjong\Mahjong\Mahjong.vcproj.XP-201109211453.Administrator.user
     文件        1183  2012-09-10 16:30  Mahjong\Mahjong\ReadMe.txt
     文件         212  2012-09-10 16:30  Mahjong\Mahjong\stdafx.cpp
     文件         233  2012-09-10 16:30  Mahjong\Mahjong\stdafx.h
     文件         498  2012-09-10 16:30  Mahjong\Mahjong\targetver.h
     目录           0  2019-06-12 15:54  Mahjong\新建文件夹\

评论

共有 条评论