1. 程式人生 > >2016第7屆藍橋杯A組第6題牌型種數 題解

2016第7屆藍橋杯A組第6題牌型種數 題解

題目:
牌型種數
小明被劫持到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; }