小明被劫持到x賭城,被迫與其他3人玩牌。
一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。
這時,小明腦子裡突然冒出乙個問題:
如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?
請填寫該整數,不要填寫任何多餘的內容或說明文字。
先介紹一種容易想到的dfs思路
對1-13號牌選擇13次,注意同號牌數目不超過4次。
但是時間複雜度是13^13,不可取。
private
static
void
dfs(
int n,
int[
] data)
// 從1-13選擇
for(
int i =
1; i <=
13; i++)}
}
另外一種可行的dfs思路
將問題轉化為,我們對1-13號牌的數量進行選擇(數量的選擇範圍在0-4)
當1-13號牌的數量全部選擇完畢後,check一下即可
這樣一來,時間複雜度大概在5^13
private
static
void
dfs(
int cur,
int[
] data)
return;}
// 對cur號牌的數量進行選擇
for(
int i =
0; i <
5; i++
)}
優化
**還可以進行優化,將手中持有的撲克牌數量用cnt變數表示
利用邊界條件進行剪枝
private
static
voidf(
int cur,
int cnt)
if(cur ==
14&& cnt ==13)
for(
int i =
0; i <
5; i++
)}
歷屆試題 牌型種數 (dfs)
小明被劫持到x賭城,被迫與其他3人玩牌。一副撲克牌 去掉大小王牌,共52張 均勻發給4個人,每個人13張。這時,小明腦子裡突然冒出乙個問題 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?思路 求牌的組合總數,每種牌有5種可能,取0 4張,當取...
藍橋杯 牌型種數 暴力 dfs
牌型種數 小明被劫持到x賭城,被迫與其他3人玩牌。一副撲克牌 去掉大小王牌,共52張 均勻發給4個人,每個人13張。這時,小明腦子裡突然冒出乙個問題 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?思路 迴圈遍歷每個點數所選擇的張數,每個點數最...
牌型種數(Java)
很簡單的深搜,但是需要細心。牌型種數 小明被劫持到x賭城,被迫與其他3人玩牌。一副撲克牌 去掉大小王牌,共52張 均勻發給4個人,每個人13張。這時,小明腦子裡突然冒出乙個問題 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?請填寫該整數,不要...