2015 第六届 蓝桥杯 JavaB组 牌型种数——递归

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

思路:其实这题跟全排列的实现差不多。因为点数相同时有四种不同的花色,那么我们每次都是按照点数来取牌,每次取的点数有0~4这几种可能,如果当前取出的牌数已经有13张时说明找到了一种组合.。

public class Question_07 {
    //组合的数量
    static int count=0;
    public static void main(String[] args) {
        process(1,0);
        System.out.println(count);
    }

    /**
     *
     * @param n 表示n是第几张牌(A~K)
     * @param sum 当前的牌数
     */
    private static void process(int n, int sum) {
        if (sum==13){
            count++;
            return;
        }
        if (n<14){
            //每张点数的牌可取的范围有0~4
            for (int i=0;i<5;i++){
                sum += i;
                process(n+1,sum);
                sum -= i;
            }
        }

    }
}

答案:3598180

发布了73 篇原创文章 · 获赞 5 · 访问量 4905

猜你喜欢

转载自blog.csdn.net/weixin_43517302/article/details/104737019