ETH官方钱包

前往
大廳
主題

ZeroJudge - f712: 撲克排序-1 解題心得

Not In My Back Yard | 2021-04-07 00:00:01 | 巴幣 0 | 人氣 266

題目連結(jié):


題目大意:
現(xiàn)在撲克牌的 52 張牌用 0 ~ 51 編號(hào),其中 0 ~ 12 代表黑桃(Spade,以 S 代稱) A23456789TJQK(T 代表 10)、 13 ~ 25 代表紅心(Heart,以 H 代稱) A23456789TJQK、 26 ~ 38 代表紅磚(Diamond,以 D 代稱) A23456789TJQK、 39 ~ 51 代表黑梅(Club,以 C 代稱) A23456789TJQK。

輸入第一列給定一正整數(shù) t (1 < t ≦ 20),代表有 t 筆測(cè)試資料,每筆佔(zhàn)一列。每列給定 52 個(gè)整數(shù),其為數(shù)字 0 ~ 數(shù)字 51 的一種排列,即代表著撲克牌的一種排列。

現(xiàn)在玩家有 10 個(gè)人,牌堆第一張給第一個(gè)人、第二張給第二個(gè)人、……、第十張給第十個(gè)人、第十一張給第一個(gè)人、……以此類推。而每人會(huì)拿到五張牌(意即牌堆會(huì)剩兩張牌)。

而兩張撲克牌的大小比較為:先比較兩張的點(diǎn)數(shù)大小,如果不一樣則將點(diǎn)數(shù)大的排前面;如果點(diǎn)數(shù)一樣,則比較花色,其中 S > H > D > C,大的放前面。

兩副手牌的比較方式為:先比各自的點(diǎn)數(shù)最大的牌,一樣再比點(diǎn)數(shù)第二大、一樣再比點(diǎn)數(shù)第三大、第四大、第五大。如果五張點(diǎn)數(shù)都一樣,則比點(diǎn)數(shù)第一大的花色大小。其中,如果比出來(lái)大小則將大的排前面。

請(qǐng)將每位玩家的手牌各自由小排到大,再將每位玩家按照其牌組決定大小順序,最後將玩家們的順序輸出。輸出格式為玩家的編號(hào)並接著玩家的已排序之手牌,參見(jiàn)範(fàn)例輸出。



範(fàn)例輸入:
2
26 25 47 10 29 50 12 49 17 41 31 40 19 24 0 27 8 36 23 32 42 30 13 6 15 37 35 39 51 45 28 14 5 18 2 46 4 43 44 11 22 1 9 38 34 7 21 20 3 16 48 33
31 42 40 38 16 14 39 18 49 10 7 1 33 34 36 11 6 5 17 45 25 15 19 46 30 12 29 44 21 13 8 50 9 4 35 20 41 37 27 22 43 48 24 0 26 23 28 3 2 51 47 32


範(fàn)例輸出:
Case 1:
8 CA DJ CJ H8 C5
3 HA ST C9 H7 S6
1 DA HT D6 C4 D3
5 SA D9 D4 S3 H3
4 DK HQ SJ S7 H6
9 CK HJ C6 H5 S4
7 SK DT S9 H9 S5
2 HK D5 S2 H2 C2
6 DQ CQ S8 C8 D2
10 SQ D7 C7 H4 C3
Case 2:
10 HA CK SJ HT C7
4 SA DK D9 C8 S5
5 DA DJ DT D5 H4
7 CA S7 D4 D3 C3
6 SK SQ HJ H8 H2
1 HK S9 S8 D6 C5
3 HQ ST D8 H7 C2
2 CQ CT C4 H3 S2
8 DQ S6 H6 C6 S4
9 CJ H9 H5 S3 D2


解題思維:
先將每個(gè)玩家的手牌按照比較規(guī)則由大到小排序。這樣一來(lái)等等比較手牌的時(shí)候,只要按照順序比即可,不用一直去找最大、第二大等等。

再來(lái)將各個(gè)玩家按照手牌大小排序,如同其他自定義排序的題目一樣,如這題




此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說(shuō)明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。

創(chuàng)作回應(yīng)

相關(guān)創(chuàng)作

更多創(chuàng)作