您的位置:首页 > 其它

2015蓝桥杯 牌型种数(回溯dfs)

2016-03-07 19:43 267 查看
小明被劫持到X赌城,被迫与其他3人玩牌。

一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。

这时,小明脑子里突然冒出一个问题:

如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?

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

题解:一共是记号为A,2,3,4,5,6,7,8,9,10,J,Q,k的十三个元素,每个元素的情况可能是0,1,2,3,4。这十三个元素的和为13即可。回溯穷举再剪枝即可。

#include<iostream>
using namespace std;
int a[13+5];
int count=0;
int sum=0;
void dfs(int cur)
{
if(cur==13)
{
if(sum==13)
count++;
return ;
}
if(sum>13)
return ;
for(int i=0;i<=4;i++)
if(sum+i<=13)
{
a[cur]=i;
sum+=i;
dfs(cur+1);
sum-=i;
}
}
int main()
{
dfs(0);
cout<<count<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: