洛谷 P1443 馬的遍歷 bfs

2021-10-03 13:04:23 字數 815 閱讀 5376

問題描述:

有乙個nm的棋盤(1m的矩陣,代表馬到達某個點最少要走幾步(左對齊,寬5格,不能到達則輸出-1)

輸入:

3 3 1 1

輸出:

0 3 2

3 -1 1

2 1 4

本蒟蒻的第一篇題解,也是研究了半天才搞明白。話不多說直接給思路。

本題給出棋盤大小和初始位置求到每個點最少要走幾步。設定乙個佇列陣列,當某位置被第一次到達時也一定是最少步驟,把他入隊。從起始位置是0步,第一次走有八種情況,當在棋盤裡時,把這些點入隊並記錄下x,y值,step即是到達這些點的步數。然後再由這些點尋找更多的點。典型的bfs思想。下面

是**希望對你們有用。

#include

using

namespace std;

int n,m,sx,sy,h=

0,step,t=

1,g[

500]

[500];

struct queue

que[

10000];

//佇列要大不然不ac

int xx[10]

=,yy[10]

=;//每一步可以有8個選擇

intmain()

}}for(

int i=

1;i<=n;

++i)

}

對廣度優先搜尋不太明白的可以看一下這個題 填塗顏色

佇列queue的簡單使用:stl函式總結

洛谷 P1443 馬的遍歷(bfs)

題意 乙個n m的棋盤,給你馬的起始座標,輸出到達棋盤上每一點的最少步數,無法到達則輸出 1。思路 bfs即可。具體解釋見 include include include include include using namespace std int n,m,x,y 棋盤和馬的初始座標 int qu...

洛谷 P1443 馬的遍歷(BFS)

有乙個n m的棋盤 1一行四個資料,棋盤的大小和馬的座標 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 3 3 1 1 0 3 2 3 1 1 2 1 4 include using namespace std define pi acos 1 define m...

洛谷 P1443 馬的遍歷 bfs

略有收穫的bfs,使用了try enqueue函式使得加入佇列非常方便。效能理論上是一樣的因為是inline?還有就是左對齊是使用 4d,相對於右對齊的 4d,還有右對齊前導零的 04d,自己試一下唄。includeusing namespace std define ll long long in...