可以走到這一格嗎?
0.5s 256M請實作以下函式:
bool is_walkable(const vector<string>& grid, int r, int c);
grid 是一張長方形二維地圖。字元 . 代表可以走的格子,字元 # 代表不可以走的格子。
地圖左上角的座標是 \((0,0)\),\(r\) 往下增加,\(c\) 往右增加;因此座標 \((r,c)\) 對應到 grid[r][c]。換句話說,\(r\) 是列座標,\(c\) 是行座標。
如果 \((r,c)\) 位於地圖範圍內,而且該格是 .,請回傳 true;否則回傳 false。傳入的座標可能超出邊界,因此存取地圖以前必須先完成邊界判斷。
題目提供的標頭檔已讓 string 與 vector 可以直接使用。你只需要實作指定函式,不需要撰寫 main 或處理輸入與輸出。
輸入格式
本節描述評測程式如何呼叫你的函式。
第一行有一個正整數 \(T\),代表函式呼叫次數。
每次呼叫依序給定:
- 一行兩個正整數 \(H\)、\(W\),代表地圖的高與寬。
- 接下來 \(H\) 行,每行是一個長度為 \(W\) 的字串,代表
grid。 - 一行兩個整數 \(r\)、\(c\),代表欲查詢的座標。
限制
- \(1 \le T \le 100\)
- \(1 \le H,W \le 100\)
grid中的每個字元都是.或#- \(-10^9 \le r,c \le 10^9\)
輸出格式
每次函式呼叫輸出一行。若函式回傳 true,輸出 1;否則輸出 0。
範例輸入
4
3 4
..#.
.#..
....
0 1
3 4
..#.
.#..
....
0 2
3 4
..#.
.#..
....
1 -1
3 4
..#.
.#..
....
2 4
範例輸出
1
0
0
0
範例解釋
\((0,1)\) 是地圖內的 .;\((0,2)\) 是 #;\((1,-1)\) 與 \((2,4)\) 都超出地圖範圍。