給定騎士在棋盤上的 初始 位置(乙個2進製矩陣 0 表示空 1 表示有障礙物),找到到達 終點 的最短路線,返回路線的長度。如果騎士不能到達則返回 -1 。
如果騎士的位置為 (x,y),他下一步可以到達以下這些位置:
(x + 1, y + 2)
(x + 1, y - 2)
(x - 1, y + 2)
(x - 1, y - 2)
(x + 2, y + 1)
(x + 2, y - 1)
(x - 2, y + 1)
(x - 2, y - 1)
例1:輸入:
[[0,0,0],
[0,0,0],
[0,0,0]]
source = [2, 0] destination = [2, 2]
輸出: 2
解釋:[2,0]->[0,1]->[2,2]
例2:輸入:
[[0,1,0],
[0,0,1],
[0,0,0]]
source = [2, 0] destination = [2, 2]
輸出:-1
使用乙個佇列來記錄下第n步能夠走到的所有的點,乙個8*2的二維陣列step來表示騎士的前進方式。
對於當前佇列中的所有點,遍歷step來得到所有的新的點,如果符合要求並且沒有走過這個點,就可以加入到佇列中並且把grid中該點變為true,在下乙個迴圈中遍歷該點。如果找到乙個點是終點,那麼返回步數。
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
48
/*** definition for a point.
* struct point
* point(int a, int b) : x(a), y(b) {}
* };
*/class solution ,,,,,,,};
int n = grid.size(), m = grid[0].size(), res = 0;
queueq;
q.push(source);
grid[source.x][source.y] = true;
while (!q.empty()) }}
}return -1;}};
-------------end of file
thanks for reading-------------
演算法記錄 騎士的最短路線
給定騎士在棋盤上的 初始 位置 乙個2進製矩陣 0 表示空 1 表示有障礙物 找到到達 終點 的最短路線,返回路線的長度。如果騎士不能到達則返回 1 說明 如果騎士的位置為 x,y 他下一步可以到達以下這些位置 x 1,y 2 x 1,y 2 x 1,y 2 x 1,y 2 x 2,y 1 x 2,...
迷宮的最短路線(BFS
迷宮的最短路線 bfs 題目 給定乙個大小為n m的迷宮。迷宮由通道和牆壁足證,每一步可以向鄰接的上下左右四格的通道移動。請求出從起點到終點所需要的最小步數。請注意,本體假定從起點一定可以移動到終點。限制條件 n,m 100 思路 1.初始化迷宮maze i j 並對其每乙個位置附上乙個很大的值來表...
送快遞的最短路線
題目描述 某物流派送員p,需要給a b c d4個快遞點派送包裹,請問派送員需要選擇什麼的路線,才能完成最短路程的派送。假設如圖派送員的起點座標 0,0 派送路線只能沿著圖中的方格邊行駛,每個小格都是正方形,且邊長為1,如p到d的距離就是4。隨機輸入n個派送點座標,求輸出最短派送路線值 從起點開始完...