題解 P1443 馬的遍歷

2022-06-20 20:30:10 字數 1133 閱讀 9431

此題就是廣度優先搜尋題再稍加修改即可,再佇列不為空時,一直通過第乙個元素擴充套件出其他點

根據廣搜的性質,第乙個被存入佇列的點的步數一定是最小的步數。

那麼就可以使用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...