/*
程序描述:
一副纸牌有52张,4种花色,每种花色13张。我们能用一个整数m就表示出所有的52种情况,规则是:
m / 13: =0: 红心,=1: 方块,=2: 梅花,=3: 黑桃
m % 13: =0:2,=1:3,=2:4 .... =8:10,=9:J,=10:Q,=11: K,=12:A
比如:m = 15 就表示:方块4 m=38表示:梅花A
我们希望用程序模拟1副扑克牌随机抽取13张,发给某人的过程。
发牌后需要排序:规则是:先按花色,再按点数。花色的大小顺序是:
梅花、方块、红心、黑桃。点数的顺序是:2、3、4、…. 10、J、Q、K、A。
然后,挑选出最大的连续牌型。规则是:连续张数多的大。张数相等的则花色大的大(此时与点数无关)。
*/
void find(int x[])
{
int max_p = 12;
int max_num = 1;
int p = 12;
int num = 1;
for(int i=11; i>=0; i--)
{
if(x[i]/13 == x[i+1]/13 && x[i]%13 == x[i+1]%13-1) // 同花连续
num++;
else
{
if(num > max_num)
{
max_num = num;
max_p = p;
}
p = i;
num = 1;
}
}
if(num > max_num)
{
max_num = num;
max_p = p;
}
for(i=0; i<max_num; i++)
{
show_card(x[max_p-max_num+i+1]);
printf(" ");
}
printf("\n");
}
本文介绍了一个程序,该程序模拟了一副扑克牌中随机抽取13张牌的过程,并进行排序。排序依据为花色和点数,之后找出最大的连续牌型。
1068

被折叠的 条评论
为什么被折叠?



