1、问题描述
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王,共52张),均匀发给4个人,每个人13张
这时,小明脑子里突然想到一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
2、代码实现
public class Main{
static int ans = 0;
public static void main(String[] args) {
dfs(0,0);
System.out.println(ans);
}
public static void dfs(int depth,int sum){
//深度不能大于13,sum代表手中的牌数,也不能大于13
if(depth > 13 || sum > 13) {
return;
}
//正好13张牌
if(depth == 13 && sum == 13) {
ans++;
}
//每一张牌有五种状态,拿0到4张
for(int i = 0;i < 5;i++) {
sum += i;
dfs(depth + 1,sum);
sum -= i; //回溯
}
}
}