1. 程式人生 > >牌型種數(Java)

牌型種數(Java)

很簡單的深搜,但是需要細心。

牌型種數

小明被劫持到X賭城,被迫與其他3人玩牌。
一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。
這時,小明腦子裡突然冒出一個問題:
如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先後順序,自己手裡能拿到的初始牌型組合一共有多少種呢?

請填寫該整數,不要填寫任何多餘的內容或說明文字。

先說答案吧,3598180
public class p07 {

    private static int[] a = new int[14];

    private static int index = 13
; private static int count = 0; static { for(int i = 0;i<=13;i++) a[i] = 4; } public static void main(String[] args) { dfs(1); System.out.println(count); } private static void dfs(int k) { if(k == 14) { if(index==0) { // for(int i = 1;i<=13;i++)
// System.out.print(4-a[i] + " "); // System.out.println(); count++; } return; } if(a[k]!=0) { for(int i = 0;i<=a[k];i++) { if(index < 0) break; index -= i; a[k] -= i; dfs(k+1
); index += i; a[k] += i; } } } }