题目
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王,共52张),均匀发给4个人,每人13张。
这时,小明脑子突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
要求
输出该整数,不要输出任何多余的内容。
分析过程
一共有13张牌,1234~10JQK,我们先试着考虑按顺序发牌。
- 得到1,可能的几率是0或者1~4张,然后按照顺序123~JQK顺序得到
- 如果手里拿到的牌足够13张,则种数
+1 - 如果按照顺序123~JQK已经轮完了,也就是发完牌。或者手里的牌大于13张,则跳过。
实现
java
package lab;
public class 牌醒种数02 {
static int cnt = 0; //拿到牌的种数
static int sum = 0; // 13张牌
public static void main(String[] args) {
dfs(0);
System.out.println(cnt);
}
static public void dfs (int u) { //u牌的类型123456-JQK
//sum手中的拿到牌数大于13
//u 123-JQK到底了
if(sum>13 || u>13) return;
//当牌拿到13张就加一种方法
if (sum==13) {
cnt++;
return;
}
//牌的类型,拿到0张或者1~4张
for (int i = 0; i <=4; i++) {
sum+=i;
dfs(u+1);
sum-=i;
}
}
}
本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 小码同学
评论
隐私政策
0/500
滚动到此处加载评论...
