# 台大 107 軟體 ###### tags: `NTU` `107` `軟體` 1. E 2. D 3. B 4. B 5. B 6. A 7. D 8. B 9. B 10. A 11. B 12. C 13. B 14. B 15. C 16. C (V) (a) (1) 5,3,1,2,4 :::info greedy: 5,3,4,1,2=7 optimal: 4,2,5,1,3=9 ::: (2) Max[i][j] = $a_i$...$a_j$ 的局部最大 Min[i][j] = $a_i$...$a_j$ 的局部最小 Max[i][j] = max($a_i$ - min[i + 1][j], $a_j$ - min[i][j - 1]) Min[i][j] = min($a_i$ - max[i + 1][j], $a_j$ - max[i][j - 1]) Max[i][i] = Min[i][i] = $a_i$ Max: 5 2 7 5 9 X 3 2 4 4 X X 1 1 5 X X X 2 2 X X X X 4 Min: 5 -2 -1 -5 -1 X 3 -2 0 -2 X X 1 -1 -1 X X X 2 -2 X X X X 4 (b) (1) queue: 假設有兩個 in, out 兩個 stack push_back: 將 element push 進 in pop_front: 如果 out 為空,則將 in 的所有元素 pop 出來,再依序 push 進 out 裡。然後再 pop out deque: push_back: 將 element push 進 in push_front: 將 element push 進 out pop_front: 如果 out 為空,將 in 一半位於底部的元素 pop 出來,再依序 push 進 out 裡,然後再 pop out pop_back: 如果 in 為空,將 out 一半位於底部的元素 pop 出來,再依序 push 進 in 裡,然後再 pop in (2) push: 2 pop: 1 因為 push 和 pop 都是常數時間,因此 n 個 push/pop 為 O(n) :::info push 的 2 包念了從 in 轉移至 out 的「費用」 ::: (3) 最差的情況下,會在兩邊來來回回的,時間複雜度為: $n+\frac{n}{2}+\frac{n}{4}+...+1\in O(n^2)$ VI 被上一題搞到沒力氣寫了