小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
import java.util.Arrays;
public class Test3 {
static int sum = 0;
public static void main(String[] args) {
int[] a = new int[13];
Arrays.fill(a, 4); //初始化纸牌数量
fun(a,13,0);
System.out.println(sum);
}
private static void fun(int[] a, int n ,int k) { //n表示还需要拿几张,k代表点数的索引
if(n == 0){
sum++;
return;
}
if(k >= 13){
return;
}
for (int i = 0; i <= a[k]; i++) {
fun(a,n-i,k+1); //拿i个 点数为a[k]的牌,然后继续拿点数为a[k+1]的牌
}
}
}
结果为:
3598180