馬的遍歷(BFS建構函式解法)

2021-10-03 16:40:40 字數 711 閱讀 8628

題目描述

有乙個n*m的棋盤(1輸入格式

一行四個資料,棋盤的大小和馬的座標

輸出格式

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

輸入輸出樣例

輸入3 3 1 1

輸出0 3 2

3 -1 1

2 1 4

分析:到某個點最少要走幾步,很明顯是乙個bfs問題,定好起點,用寬搜搜尋,搜到的地方將步數列印到地圖中,沒有搜到的地方輸出-1即可;

#include

#include

#include

using

namespace std;

struct node};

int mp[

405]

[405];

bool vis[

405]

[405];

int vir[8]

[2]=

,,,,

,,,}

;//馬的走法

intmain()

} hos.

pop();

//任務完成彈出

}for

(int i=

0;i)else

}printf

("\n");

}return0;

}

BFS 馬的遍歷

又是一道裸bfs。主要是為了過洛谷上的試煉場。有乙個n m的棋盤 1 n,m 200 在某個點上有乙個馬,要求你計算出馬到達棋盤上任意乙個點最少要走幾步 輸入描述 一行四個資料,棋盤的大小和馬的座標 輸出描述 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 inp...

BFS演算法 馬的遍歷

有乙個n m的棋盤 1這題主要難度在於,馬如何移動。我們只要將馬移動的範圍畫出來,思路就非常清晰了 又上圖可見,馬從起點 0,0 搜尋的範圍有8個,將其轉換 如下 int dx int dy 我們依次搜尋到結束,就能獲取到最小路徑了 include using namespace std int v...

bfs 廣搜 馬的遍歷

includeusing namespace std int dirx 8 int diry 8 const int n 405 int dp n n int n,m,x,y int new x,new y bool vst n n 訪問標記 queuevis bfs佇列 bool checksta...