lintcode 騎士的最短路線

2021-09-20 10:01:17 字數 1437 閱讀 1626

給定騎士在棋盤上的 初始 位置(乙個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,在下乙個迴圈中遍歷該點。如果找到乙個點是終點,那麼返回步數。

123

4567

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個派送點座標,求輸出最短派送路線值 從起點開始完...