本題有乙個坑點 就是馬是走「日」的,所以找解(bfs)的時候需要注意八個可能 存到dx dy中for迴圈遍歷就行啦
#include
using
namespace std;
struct node
;int dx=
;int dy=
;int vis[
1000][
1000
],bk[
1000][
1000];
int n,m,sx,sy;
void
bfs(
int x,
int y));
vis[x]
[y]=1;
bk[x]
[y]=0;
while
(!q.
empty()
));}
}}}int
main()
}
由於格式問題printf更加方便一些,所以本題沒有開加速,因為關閉stdio聯絡以後就無法用printf了
本題思路就是從輸入的數開始bfs,記錄座標走的次數,因為有走不到就輸出-1的設定,所以需要乙個
memset(bk,-1,sizeof(bk));來將存答案的陣列初始化成-1,這樣走不到的地方就輸出-1就完事了。
node入隊的地方還有一種寫法,**如下:
#include
using
namespace std;
struct node
;int dx=
;int dy=
;int vis[
1000][
1000
],bk[
1000][
1000];
int n,m,sx,sy;
void
bfs(
int x,
int y)}}
}int
main()
}就是每次都定義一次node 名稱下的結構體,然後將數存到結構體中,進隊,上邊的寫法和這個乙個意思,不過這種個更容易理解,
看個人習慣啦~
洛谷 P1443 馬的遍歷(bfs)
題意 乙個n m的棋盤,給你馬的起始座標,輸出到達棋盤上每一點的最少步數,無法到達則輸出 1。思路 bfs即可。具體解釋見 include include include include include using namespace std int n,m,x,y 棋盤和馬的初始座標 int qu...
洛谷 P1443 馬的遍歷 bfs
問題描述 有乙個nm的棋盤 1m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 輸入 3 3 1 1 輸出 0 3 2 3 1 1 2 1 4 本蒟蒻的第一篇題解,也是研究了半天才搞明白。話不多說直接給思路。本題給出棋盤大小和初始位置求到每個點最少要走幾步。設定乙個佇列陣列...
洛谷 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...