(蓝桥杯)牌型种数

岁酱吖の 提交于 2020-01-17 22:30:50

问题描述

小明被劫持到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;
} 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!