0
点赞
收藏
分享

微信扫一扫

蓝桥杯牌型种数 经典搜索递归题java

Ad大成 2022-03-20 阅读 43
算法

第七题:牌型种数
题目描述
小明被劫持到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);
	}
}

 

举报

相关推荐

0 条评论