小明被劫持到X賭城,被迫與其他3人玩牌。
一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。
這時,小明腦子裡突然冒出一個問題:
如果不考慮花色,隻考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?
請填寫該整數,不要填寫任何多餘的内容或說明文字。
思路:
假設有13個桶,每個桶裡面有4張牌,從中抽取任意數量的牌,使得總數為13。
#include<iostream>
using namespace std;
int cnt;
void f(int k,int sum=0) {
if (k < 13 && sum>13)//剪枝
return;
if (k == 13) {
if (sum == 13)//合法
cnt++;
return;
}
for (int i = 0; i < 5; i++) {//組合
sum += i;
f(k + 1, sum);
sum -= i;
}
}
int main() {
f(0,0);
cout << cnt;
return 0;
}