题目:
题目描述
小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序
自己手里能拿到的初始牌型组合一共有多少种呢?
输出格式
请输出该整数,不要输出任何多余的内容或说明文字。
思路:
一共要摸13张牌,也一共有十三种牌,每种牌有四张,每种牌可以摸0,1,2,3,4张5种情况,当摸的13种牌各自选择的情况,加起来恰好等于13张的时候,牌型组合++
代码:
#include<bits/stdc++.h>
using namespace std;
int cot=0,ans=0,sum=0;//cot为那张牌的摸取张数,ans为已经摸到第几张牌
void dfs(int ans)
{
if(ans==13&&cot==13)
{
sum++;
return ;
}
if(ans>13||cot>13)
return ;
for(int i=0;i<5;i++)//五种情况
{
cot+=i;
dfs(ans+1);
cot-=i;
}
}
int main()
{
dfs(0);
cout<<sum;
}