創作內容

1 GP

ZeroJudge - e263: 九九 解題心得

作者:Not In My Back Yard│2020-07-09 00:41:25│贊助:2│人氣:41
題目連結:


題目大意:
輸入有多筆測試資料,每筆佔兩列。第一列給定兩正整數 n 、 m (2 ≦ n ≦ 100 , 1 ≦ m ≦ 1000),代表有 n 個人、總共出了 m 張牌。接著的一列給定 m 張牌的資訊。

牌可能是 A 、 2 、 3 、 4 、 5(x) 、 6 、 7 、 8 、 9 、 10+ 、 10- 、 J 、 Q+ 、 Q- 或是 K。每張牌各自有各自的效果。

A 會將目前點數歸零、
4 會反轉出牌的方向、
5 會指定一名玩家,而 (x) 即是玩家編號 x ,代表從該玩家開始出牌、
10 跟 Q 後面接著 + 或 - 代表是要 +10 (Q 是 +20) 還是 -10 (此時 Q 是 -20) 、
J 代表略過、
K 代表將目前點數變為 99 。
其餘的牌單純是將目前點數加上牌上面的點數值。

如果點數因為 10 或 Q 的牌而減到小於 0 ,則將點數設回 0 。

現在從玩家 1 (玩家編號 1 ~ n)開始出牌,一開始是順時針輪替(如果有 4 則會改變方向,順時針變逆時針,或是逆時針變回順時針)。而這 n 個人按照編號小到大順時針坐。點數初始為 0。

當有玩家使目前點數超過 99 時,請輸出該玩家的編號並接著輸出「 cheated!」;如果點數從頭到尾都沒有爆掉,從輸出「The sum is 」,並接著目前點數之值。詳見範例輸出。



範例輸入:
5 5
K Q- Q+ J 4
3 5
A A A A A
4 7
K K J 5(1) Q+ Q- A


範例輸出:
The sum is 99
The sum is 0
1 cheated!


解題思維:
單純的模擬題。把每張牌當作一個字串讀進來,然後看第一個字元是什麼去判斷該執行什麼動作。開頭是 A 就將點數歸零 、開頭 J 就換下一個玩家、……,其中 1 開頭代表牌為 10,後面可能接著 + 或是 - ,依序代表 +10 或 -10 。

比較麻煩一點的是 5 這張牌,後面會跟著一個 (x) ,而 x 是一個介於 1 ~ n 數字。需要將其提取出來。

如果過程中,點數有超過 99 ,就輸出目前出牌的玩家之編號。如果中途都沒事,就輸出目前的點數。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4843044
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:程式題目解題心得|模擬

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★inversion 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:ZeroJudge - ... 後一篇:ZeroJudge - ...

追蹤私訊

作品資料夾

shane8124各位帥哥美女們
《耶雷弗:契約醫生》看更多我要大聲說3小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】