2016第7屆藍橋杯A組第6題牌型種數 題解
阿新 • • 發佈:2019-01-01
題目:
牌型種數
小明被劫持到X賭城,被迫與其他3人玩牌。
一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。
這時,小明腦子裡突然冒出一個問題:
如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?
思路:用dfs;深度為牌的種數(13),每種牌有5種選擇情況:選0、1、2、3、4張;結束條件為選取的牌的數目等於13;
答案:3598180
Code:
#include<bits/stdc++.h>
using namespace std;
int cnt = 0;
void dfs(int idx,int cur){
//idx:當前要考慮的點數,cur:已選出的牌的個數
if(cur == 13){
cnt++;
return ;
}
if(cur > 13) return ;
if(idx > 13) return ;
for(int i = 0; i <= 4; ++i){
dfs(idx + 1, cur + i);
}
}
int main(){
dfs(1,0);
cout<<cnt<<endl;
return 0;
}