DFS 牌型種數

2021-09-12 16:30:04 字數 1125 閱讀 6078

小明被劫持到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張。這時,小明腦子裡突然冒出乙個問題 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?請填寫該整數,不要...