小明被劫持到X賭城,被迫與其他3人玩牌。
一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。
這時,小明腦子裏突然冒出一個問題:
如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裏能拿到的初始牌型組合一共有多少種呢?
#include<iostream>
using namespace std;
int sum = 0;//手牌數
int count1 = 0;//方案數
/*深度優先算法*/
void dfs(int kind)//kind表示當前的點數
{
if (sum > 13 || kind > 13)return;//如果總數大於13直接return
if (kind == 13 && sum == 13)//如果滿足要求退出循環
{
count1++;
return;
}
if (kind <= 13)
{
int i;
for (i = 0; i < 5; i++)//取0張或者取4張
{
sum = sum + i;
dfs(kind + 1);
sum = sum - i;
}
}
}
int main()
{
dfs(0);
cout << count1 << endl;
return 0;
}
3598180