切換
舊版
前往
大廳
主題

ZeroJudge - c092: 00587 - There's treasure everywhere! 解題心得

Not In My Back Yard | 2019-02-05 18:48:33 | 巴幣 0 | 人氣 122

題目連結:


題目大意:
給定一個字串 S (長度不超過 200 個字元),代表要前往一個寶藏的方法。

其中各個步驟由數字與方向組成(方向為八方位: N 、 NE 、 E 、 SE 、 S 、 SW 、 W 、 NW), 17NE 即代表往東北方向走 17 步。且每個步驟之間由「,」隔開。而整個句子以「.」做結尾。

對於每一個字串,求寶藏相對於起始位置(假設為(0, 0))的座標與距離。輸出格式參照範例輸出。



範例輸入:
3N,1E,1N,3E,2S,1W.
10NW.
END


範例輸出:
Map #1
The treasure is located at (3.000,2.000).
The distance to the treasure is 3.606.

Map #2
The treasure is located at (-7.071,7.071).
The distance to the treasure is 10.000.


解題思維:
當在分析字串時,數字可以預先存在另一字串(也可以直接使用整數型態來存)。而方向的那些字元也可以另外存。

當遇到分界點,也就是「,」或「.」時,就把剛剛存的數字套用到此方向的 x 、 y 座標的變化量。例如,5E 就是 y 座標 + 5 ; 6NE 則是 x + (6 ÷ √2) 且 y + (6 ÷ √2)(因為往東北方 6 單位長,所以分解成 x 、 y 的變量,要除以√2) 等等。

但是最重要的是,這題在 Zerojudge 上的要求是每個測試資料的輸出內容之間要空一列。但是UVa 原題則是每輸出一個測試資料之後就要空一列。因為 Zerojudge 這邊也開成「嚴格判定」,所以要注意一下。

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

創作回應

胖胖貓
當遇到分界點,也就是「,」或「.」時,就把剛剛存的數字套用到此方向的 x 、 y 座標的變化量。例如,5E 就是 y 座標 + 5 ; 6NE 則是 x + 6 且 y + 6 等等。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
這行說明出錯囉,應該是 x + 6/√2 且 y + 6/√2 喔
2019-02-07 02:07:59
Not In My Back Yard
阿 不好意思,腦袋撞到了,思緒不清楚XD

已更正,感謝大大的糾正。
2019-02-07 11:19:21

相關創作

更多創作