欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

牌型总数——第六届蓝桥杯C语言B组(省赛)第七题

程序员文章站 2022-07-08 18:05:14
原创 牌型种数 小明被劫持到X赌城,*与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢? 请填写该整数,不要填写任何多余的内容 ......

原创


牌型种数

小明被劫持到X赌城,*与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

请填写该整数,不要填写任何多余的内容或说明文字。

 

枚举:

一副牌可以分成13堆,每一堆4张相同的牌,因为不考虑花色,所以每堆牌有0~4共5种选择,各从13堆牌抽出牌以后

判断抽出的牌张数是否等于13,等于13满足条件牌型总数+1。

public class 牌型总数 {
    public static void main(String args[]) {
        int total=0;    //记录牌型总数
        int a[]=new int[13];
        for(a[0]=0;a[0]<=4;a[0]++) {
            for(a[1]=0;a[1]<=4;a[1]++) {
                for(a[2]=0;a[2]<=4;a[2]++) {
                    for(a[3]=0;a[3]<=4;a[3]++) {
                        for(a[4]=0;a[4]<=4;a[4]++) {
                            for(a[5]=0;a[5]<=4;a[5]++) {
                                for(a[6]=0;a[6]<=4;a[6]++) {
                                    for(a[7]=0;a[7]<=4;a[7]++) {
                                        for(a[8]=0;a[8]<=4;a[8]++) {
                                            for(a[9]=0;a[9]<=4;a[9]++) {
                                                for(a[10]=0;a[10]<=4;a[10]++) {
                                                    for(a[11]=0;a[11]<=4;a[11]++) {
                                                        for(a[12]=0;a[12]<=4;a[12]++) {
                                                            int flag=0;
                                                            int i=0;
                                                            for(i=0;i<=12;i++) {    //判断是不是有13张牌
                                                                flag+=a[i];
                                                            }
                                                            if(flag==13) {
                                                                total++;
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        System.out.println(total);
    }
}

答案:3598180

16:43:44

2018-06-08