(蓝桥杯)牌型种数

问题描述

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序
自己手里能拿到的初始牌型组合一共有多少种呢?

输出

请输出该整数,不要输出任何多余的内容或说明文字。

思路

递归,从A到K选个数,个数选到13时候,总数加一

代码

#include<bits/stdc++.h>
using namespace std;
//心得:flag==true 是比较,flag=true 是赋值  注意等号的个数 
//递归思想:由于不论顺序,所以假定从A开始选择个数(0~4)直到 K(13)

int we=0;//we表示种类数 

//n表示每次选择的dian点的牌的数量
//dian表示牌的点数
//sum为13,即牌每个人发13张  
void my(int n,int dian,int sum){
	//cout<<"执行了一次递归"<<endl; 
	sum+=n;	
	if(sum==13){
		we++;
		sum=0;
		return;
	}else if(sum>13){
		return;
	}
	if(dian==13){
		return;
	}
	for(int i=0;i<=4;i++){
		my(i,dian+1,sum); 
	}
	return;
}

int main(){
	int sum=0;//牌数=13 
	int dian=0;//点数<=13 
	my(0,dian,sum);
	cout<<we<<endl;//自己电脑跑完出结果,然后oj平台直接输出答案 
	//cout<<3598180<<endl;这个是最终的答案 
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值