Introduction
有了動態陣列之後,堆疊與佇列就可以被實作出來了。堆疊的基本概念是先進去的後出來,就像疊好的盤子。佇列則相反,先進去的會先出來,就像一群在排隊的人。
Queue
接著我們來實作佇列,你會發現,這次我們要利用resize。如果佇列沒有內容物而要求輸出front()
,請輸出-1。如果佇列內沒有任何元素,請跳過指令。因為想要有效的利用空間,所以我們會使用環形陣列的方式儲存資料。
Template for your program
1 | // push back, pop front, and get front |
Usage of Queue
BFS(CSES)
你有一個迷宮的地圖,任務是找到從起點到終點的路徑。你可以向左、向右、向上、或向下移動。
Input
第一行有兩個整數 \(n\) 和 \(m\),分別代表地圖的高度和寬度。接著有 \(n\) 行,每行包含 \(m\) 個字元,描述迷宮。每個字元可以是以下其中之一:
.
(地板)#
(牆壁)A
(起點)B
(終點)
輸入中恰好有一個 A
和一個 B
。
Output
首先輸出 “YES”(如果存在路徑),否則輸出 “NO”。
如果存在路徑,輸出最短路徑的長度,並輸出該路徑的描述,該描述為由以下字符組成的字串:
L
(左)R
(右)U
(上)D
(下)
你可以輸出任意有效解。
Constraint
- \(1 \leq n, m \leq 1000\)
Samples
Sample Input 1
1 | 5 8 |
Sample Output 1
1 | YES |
Solution
1 |
|
Home but not work
- 雙端佇列(Deque)
- 模擬廣度優先遞迴
- 隱式圖BFS