java算法 牌型种数

牌型种数

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

一、暴力破解
    public static void main(String[] args) {
        int[] a = new int[13];
        int count = 0;
        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]++) {
                                                            if (a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7]
                                                                    + a[8] + a[9] + a[10] + a[11] + a[12] == 13) {
                                                                count++;
                                                            }
                                                        }

        System.out.println(count);
    }

}
二、递归
    public static int num = 0;
    public static void getResult(int type, int sum) {
        if(sum == 13 || type > 13) {
            if(type == 13)
                num++;
        }
        else {
            for(int i = 0; i <= 4; i++) {
                getResult(type + i, sum + 1);
            }
        }
    }

    public static void main(String[] args) {
        getResult(0, 0);
        System.out.println(num);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值