牌型种数
小明被劫持到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);
}
}