題意:乙個n*m
的棋盤,給你馬的起始座標,輸出到達棋盤上每一點的最少步數,無法到達則輸出-1
。
**思路:**bfs即可。
具體解釋見**:
#include
#include
#include
#include
#include
using
namespace
std;
int n,m,x,y;//棋盤和馬的初始座標
int que[200001][4];//1,2是座標,3是步數
int s[405][405];//到x,y的最少步數
int dx[8]=;//方向陣列
int dy[8]=;
int main()}}
head++;//隊首++
}for(int j,i=1;i<=n;i++)
printf("\n");
}return
0;}
總結:bfs還是要勤加練習,特別是佇列的應用。 洛谷 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...
洛谷 P1443 馬的遍歷 bfs
略有收穫的bfs,使用了try enqueue函式使得加入佇列非常方便。效能理論上是一樣的因為是inline?還有就是左對齊是使用 4d,相對於右對齊的 4d,還有右對齊前導零的 04d,自己試一下唄。includeusing namespace std define ll long long in...