这个游戏没有玩过,程序运行后的救过是有牛的种数为1726832,牛0到牛9分别为:191808,171304,
168096,171304,168096,177424,168096,171304,168096,171304。
程序代码如下:(注:调试环境是VC 6。0,game函数中被注释的代码段是用来具体打印牛X的组合,打印
的时间非常漫长~~~,我打印到了200000种看第一个还是黑桃A就关掉了~~~总共有1726832行,要是楼
主的机器比较好,有耐心的话,可以把注释符去掉,慢慢观察。
。。)
#include "stdio。h"
//黑桃 06 梅花 05 红桃 03 方块 04
static int count=0;//记录有牛的总个数
static int f[10];//分别记录从牛0到牛9的个数
static int q=0;//打印编号
void game(int s[]){
int x[5],i,j,k,y=0,sum=0;
for(i=0;i=10&&x[i]<=13)
x[i]=10;
sum =x[i];//记录总点数
}
for(i=0;i<3;i ){
for(j=i 1;j<4;j ){
for(k=j 1;k<5;k ){
y=x[i] x[j];
y =x[k];//选任意3张牌记录点数和
if(y==0){//若是牛(即是10的倍数)
count ;//总个数加1
f[(sum-y)] ;//牛几 加1
///*被注释的代码段
printf("%d。
牛%d:", q,(sum-y));
for(int p=0;p<5;p ){
if(s[p]/100==0)
printf(" 06");
else if(s[p]/100==1)
printf(" 03");
else if(s[p]/100==1)
printf(" 05");
else
printf(" 04");
if(s[p]0==1)
printf("A,");
else if(s[p]0==11)
printf("J,");
else if(s[p]0==12)
printf("Q,");
else if(s[p]0==13)
printf("K,");
else
printf("%d,",s[p]0);
}
printf("
");
//*/
return;//返回主函数,重选5张牌
}
}
}
}
}
void main(){
int i,j,k,p,q;
int a[5];
int b[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
int z[52];
for(i=0;i<13;i ){
//将整副牌存入数组z中,百位为0表示黑桃,百位1表示红桃,2表示梅花,3表示方块
z[i]=b[i];
z[i 13]=b[i] 100;
z[i 26]=b[i] 200;
z[i 39]=b[i] 300;
}
for(i=0;i<=47;i ){
//从整副牌中选取5张,存入数组a中
a[0]=z[i];
for(j=i 1;j<=48;j ){
a[1]=z[j];
for(k=j 1;k<=49;k ){
a[2]=z[k];
for(p=k 1;p<=50;p ){
a[3]=z[p];
for(q=p 1;q<=51;q ){
a[4]=z[q];
game(a);//调用程序
}
}
}
}
}
printf("有牛种数:%d种
",count);
for(i=0;i<10;i )
printf("牛%d:%d种
",i,f[i]);
}。
全部