你有玩過德州撲克嗎?
德州撲克是一種撲克牌的遊戲。規則簡單來說,就是每個人會拿到兩張底牌,而中央會有五張公共牌。
你可以從手上的兩張牌加上中央五張牌中選出五張牌來。
雙方比較他們各自選出來的五張牌的大小,較大者可以拿走所有的賭注,而若平手則是兩人平分賭注。
牌的大小是由下面的順序來決定:
單張牌的大小分別為:A > K > Q > J > T > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2
而五張牌的牌型大小分別為:同花順 > 鐵支 > 葫蘆 > 同花 > 順子 > 三條 > 兩對 > 一對 > 其他
以下分別解釋各種牌型:
同花順:同一花色,順序的牌,其中以A2345最小而TJQKA最大。例: 8♦ 9♦ 10♦ J♦ Q♦
鐵支:有四張同一點數的牌。例: 4♣ 4♦ 4♥ 4♠ 9♥
葫蘆:三張同一點數的牌,加一對其他點數的牌。 例: 8♣ 8♦ 8♠ K♥ K♠
同花:五張同一花色的牌。 例: 3♠ 4♠ 8♠ J♠ K♠
順子:五張連續的牌,其中以A2345最小而TJQKA最大。例: A♦2♦ 3♠ 4♥ 5♦
三條:有三張同一點數的牌。例: 7♣ 7♥ 7♠ 2♠ K♦
兩對:兩張相同點數的牌,加另外兩張相同點數的牌。例: 8♥ 8♠ A♣ A♦ Q♠
一對:兩張相同點數的牌。 例: 9♥ 9♠ 4♥ J♠ A♣
其他:不能排成以上組合的牌,以點數決定大小。例: 4♣ 5♣ 9♠ 10♦ A♦
而如果兩個人是同一種牌型的話:
同花順、順子的大小關係為A2345 < 23456 < 34567 < ... < TJQKA。
要特別注意JQKA2、QKA23、KA234是不能組成順子的。
鐵支是先比較四張一樣牌的大小,再比較剩下一張牌的大小,如果都一樣就算平手。
葫蘆是先比較三張一樣牌的大小,再比較兩張一樣牌的大小,如果都一樣就算平手。
三條是先比較三張一樣牌的大小,再比較剩下兩張中較大那張的大小,再比較最小的那張,如果都一樣就算平手。
兩對是先比較較大的對子的大小,再比較較小的對子的大小,再比較最小的那張,如果都一樣就算平手。
一對是先比較對子的大小,剩下三張牌按照由大到小的順序比較,如果都一樣就算平手。
同花、其他是從最大的牌開始比較,如果一樣再比次大的牌......,如果都一樣就算平手。
要特別注意的是,在德州撲克中花色不影響牌的大小,也就是8♣、8♦、8♥、8♠這四張牌比較時是一樣大的。
現在你正在玩這個遊戲,此時桌面上已經有四張翻開的牌,而你和你的對手都已經全押,並且雙方都已經將自己的底牌翻開了。
這時桌上已經有了 c 元的賭注,你想算算看在最後一張牌翻開後,你得到的賭注期望值是多少。
本題有多組測試資料:
第一行有一個數字T,代表接下來有幾個你想要分析的場面:
每筆資料會有四行。
第一行為你自己的兩張底牌,第二行為對方的底牌,第三行為桌面上已翻開的四張牌,第四行有個整數 c 表示桌面上已有的賭注。
( 0 <= c < 10,000,000 )
一張牌由兩個字元組成。
第一個字元表示牌的花色,以'c', 'd', 'h', 's'代表。
第二個字元表示牌的數目,以'A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'表示。
任意兩張牌間會以一個空白分隔,而任意兩筆測資之間會以一個空白行分隔。
你可以假設所有輸入都是合理的,也就是不會有不合法的字元,也不會有重複的牌。
請參照範例輸入。
請輸出你會得到賭金的期望值,我們保證輸出一定是整數。
第一筆範例測資,你已經贏定了。
第二筆範例測資,只有翻出來的是除了h6,hT以外的紅心時你才會贏。
第三筆範例測資,已經一定平手了。
※2008/10/31 測資更正 by peter50216,感謝yesyes100。
原TIOJ1450 / 建中校內培訓第二次模擬考試。
Problem Setter:hallogameboy、peter50216
No. | Testdata Range | Score |
---|---|---|
1 | 0 | 9 |
2 | 1 | 9 |
3 | 2 | 9 |
4 | 3 | 9 |
5 | 4 | 9 |
6 | 5 | 9 |
7 | 6 | 9 |
8 | 7 | 9 |
9 | 8 | 9 |
10 | 9 | 9 |
11 | 10 | 10 |