第七题:牌型种数
题目描述
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?
请填写该整数,不要填写任何多余的内容或说明文字。
看上去不难 但做了我半天......很烦 因为num++后面少写了一个return 然后Stack Overflow了...
一直找不到问题所在 真是笨比本比了
A当做1来看 J Q K当做11 12 13来看 因为花色不看 所以就是看数字的组合
从1 1 1 1 2 2 2 2 3 3 3 3...13 13 13 13当中拿出13个数字 组合来
思路就是1当中取0个或者1一个或者2个或者3个或者4个
2当中取0个或者1个或者2个或者3个或者4个...然后在这个基础上继续递归
这样要新建一个dfs()方法 一个参数肯定不够 需要两个 这里我们用i来控制取到哪个数字了
用k来控制这时候手里已经有多少牌了 所以初始应该是dfs(1,0) 从1开始取
然后是在2中取0~4个 3中...这样
package lanqiaobei;
public class Main {
static int num=0;//用来计数有多少种取法了
public static void dfs(int i,int k) {
if(k>13) {
return ;
}
if(k==13) {
num++;
return;
}
if(i>13&&k<13) {
return ;
}
for(int j=0;j<=4;j++) {
dfs(i+1,k+j);
}
}
public static void main(String[] args) {
dfs(1,0);
System.out.println(num);
}
}