切換
舊版
前往
大廳
主題

ZeroJudge - e582: 00555 - Bridge Hands 解題心得

Not In My Back Yard | 2020-01-23 00:49:25 | 巴幣 0 | 人氣 204

題目連結:


題目大意:
輸入有多筆測試資料,以一列的「#」作結。

每筆測資開頭給定一字元(N 、 E 、 S 、 W 其中一個),代表坐在該方位(依序代表是北、東、南、西)的玩家要當發牌人。所有玩家面向彼此,發牌人會先從他的左手邊的玩家開始發牌,以順時針的順序。

接著有兩列輸入,代表撲克牌發的順序。

撲克牌有 52 張,且有四種花色,以大小由小到大排是 C(Clubs,梅花) < D(Diamonds,方塊) < S(Spades,黑桃) < H(Hearts,愛心);而點數依照大小為 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < Q < K < A 。

每兩個字元代表一張撲克牌,例如 C7 代表的是梅花七。

發完牌後,請將每位玩家手上的牌由小到大排序並輸出。輸出格式請參見範例輸出。



範例輸入:
N
CQDTC4D8S7HTDAH7D2S3D6C6S6D9S4SAD7H2CKH5D3CTS8C9H3C3
DQS9SQDJH8HAS2SKD4H4S5C7SJC8DKC5C2CAHQCJSTH6HKH9D5HJ
#


範例輸出:
S: C3 C5 C7 CT CJ D9 DT DJ S3 SK H2 H9 HT
W: C2 C4 CK D4 D5 D6 DQ DA S4 S8 ST SJ H8
N: C6 C8 C9 CA D8 S9 SA H4 H5 H6 H7 HJ HA
E: CQ D2 D3 D7 DK S2 S5 S6 S7 SQ H3 HQ HK


解題思維:
因為一副撲克牌有 52 張,因此一位玩家就開給他大小 13 的陣列。接著就照著規則,順時針發牌。如果是以 S 為發牌員,那麼發牌順序就是 WNESWNES……,就這樣發到沒牌為止。其他以此類推。

然後接著就對著每個玩家的牌組(陣列)照著題目的規則將手牌排序即可。先比較各個牌的花色,再比較點數大小。

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

創作回應

相關創作

更多創作