此題就是廣度優先搜尋題再稍加修改即可,再佇列不為空時,一直通過第乙個元素擴充套件出其他點
根據廣搜的性質,第乙個被存入佇列的點的步數一定是最小的步數。
那麼就可以使用stl自帶的佇列queue
首先介紹一下queue佇列
標頭檔案#include
push(x)將x放入對頭
pop()取出對頭元素
front()訪問對頭元素
empty()判斷佇列是否為空
**如下
#include
#include
#include
using
namespace std;
int square[
405]
[405];
//棋盤
bool aim[
405]
[405];
//標記陣列
int dx[8]
=;int dy[8]
=;//馬走的方向
struct posi
temp;
//定義乙個結構體存放每個位置以及步數
queue ans;
//定義佇列
intmain()
//全部初始化為-1,若無法到達某個點則值不會改變
square[x]
[y]=0;
//將起點賦值為0
temp.x=x,temp.y=y;
temp.dep=0;
ans.
push
(temp)
;//存入起點
while
(!ans.
empty()
)//判斷佇列是否為空
square[ans.
front()
.x][ans.
front()
.y]=ans.
front()
.dep;
//將當前位置的步數記錄下來
ans.
pop();
//取出對頭
}for
(int i=
1;i<=n;i++
)return0;
//結束
}
感謝** P1443 馬的遍歷
題目描述 有乙個n m的棋盤 1輸入輸出格式 輸入格式 一行四個資料,棋盤的大小和馬的座標 輸出格式 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 輸入樣例 1 3 3 1 1 輸出樣例 1 0 3 2 3 1 1 2 1 4bfs題,遍歷一下所有的位置 inc...
p1443馬的遍歷
就是一道很簡單的bfs,我為了練習一下queue型別的函式,第一次沒有用陣列模擬,直接上 這道題有乙個特殊的輸出,就是輸出寬五行,學習一下。include include include include include using namespace std int n,m const int ma...
P1443 馬的遍歷
有乙個n m的棋盤 1一行四個資料,棋盤的大小和馬的座標 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 331 1032 3 11 214 include include include include using namespace std int chess...