[題解] UVa 12503 - Robot Instructions
Tags
- 題解
- UVa
- F難度
略譯
有一台機器人站在數線原點 0
接下來他會依序收到並執行一連串指令
每個指令有三種可能:
- LEFT 代表往左走,位置-1
- RIGHT 代表往右走,位置+1
- SAME AS i 代表和第 i 個指令相同,i 一定是已執行過的指令
問最後機器人所站的位置為何
題解
按照敘述模擬即可。
實作提示
- SAME AS i 其實沒有記錄的必要;
直接記錄實際上的指令內容,可避免冗餘的查詢。- 最糟情況:
- LEFT
- SAME AS 1
- SAME AS 2
- SAME AS 3
- …
- SAME AS 99
- 若一次次照著反查,則在第100項指令,會去看99,
99看98,98看97,… - 讓看似 O(n) 的複雜度,在特定狀況下會劣化至 O(n^2)
- 1+2+…+n => O(n^2)
- 迴避方式:SAME AS 1實質上是LEFT,所以記錄LEFT;
同理SAME AS 2實質上也是LEFT,記錄LEFT; - 最後記錄的情況將為:
- LEFT
- LEFT (原本為 SAME AS 1)
- LEFT (原本為 SAME AS 2)
- …
- LEFT (原本為 SAME AS 99)
- 如此一來,所有 SAME AS i 都可以在 O(1) 解決,
整體複雜度會是 O(n)
- 最糟情況:
cmusu