洛谷 P1443 馬的遍歷

2021-10-19 08:37:54 字數 943 閱讀 1876

題目鏈結

題目描述

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

輸入3 3 1 1

輸出0 3 2

3 -1 1

2 1 4

**題解:**赤裸裸的廣搜和stl的結合,第一步讀入棋盤長寬和馬的初始座標,把馬的初始座標壓入隊尾,設定兩個陣列,ans和vis,ans用來記錄步數,vis用來標記該座標是否被訪問過,如果不標記的話會死迴圈,然後開始bfs,在佇列不為空時,對首元素進行拓展(8個方向,for迴圈),將拓展的元素壓入隊尾,首元素出隊,重複操作

一定要記得標記陣列和首元素出隊,不然都會造成死迴圈

聽大佬說可以用pair,這樣就不用兩個佇列了,可惜我現在還不會hhh

ac**:

#include

using

namespace std;

int n, m, a[

500]

[500];

queue<

int> q, q1;

int dx[8]

=;//馬走日的八個方向

int dy[8]

=;int ans[

500]

[500];

int vis[

500]

[500];

intmain()

} q.

pop();

q1.pop();

}for

(int i =

1; i <= n; i++

)printf

("\n");

}}

下面是手動模擬樣例:

有錯誤歡迎各位大佬糾正!

洛谷 P1443 馬的遍歷

題目概述 有乙個n m的棋盤 1 解題思路 使用廣搜,注意地圖邊界和馬跳的方向即可。可以採用for代替8個if來減少要碼的字。注意棧的讀寫。時間複雜度 o n m 空間複雜度 o n m 源程式 const d array 1.2,1.8 of longint 2,2,1,1,1,1,2,2 1,1...

洛谷 P1443馬的遍歷

有乙個n m的棋盤 1輸入格式 一行四個資料,棋盤的大小和馬的座標 輸出格式 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 輸入樣例 1 複製3 3 1 1 輸出樣例 1 複製0 3 2 3 1 1 2 1 4 include include include i...

洛谷P1443 馬的遍歷

有乙個n m的棋盤 1輸入格式 一行四個資料,棋盤的大小和馬的座標 輸出格式 乙個n m的矩陣,代表馬到達某個點最少要走幾步 左對齊,寬5格,不能到達則輸出 1 輸入樣例 1 複製 3 3 1 1輸出樣例 1 複製 0 3 2 3 1 1 2 1 4bfs模板題 includeusing names...