洛谷 1443 馬的遍歷

2021-08-20 07:10:39 字數 865 閱讀 9742

標籤:

相似題目:

題目

有乙個n*m的棋盤(1 < n,m <= 400),在某個點上有乙個馬,要求你計算出馬到達棋盤上任意乙個點的最小步數(馬走「日」字)。

輸入
一行四個資料,分別代表棋盤的大小和馬的座標。

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

輸入樣例
3 3 1 1

輸出樣例
0 3 2

3 -1 1

2 1 4

解題思路
馬走「日」字。採用bfs解決該問題。

參考**
#include

#include

#include

using

namespace std;

const

int maxn=

400+5;

int arr[maxn]

[maxn]

,vis[maxn]

[maxn]

;int tx[8]

=,ty[8]

=;int n,m;

int posx,posy;

queue<

int> dotx,doty;

void

bfs(

int x,

int y)}}

}int

main()

return0;

}

洛谷1443 馬的遍歷 BFS

馬的遍歷p1443 思路 從開始的點map sx sy 開始廣搜,需要注意的是要記錄三個狀態,當前位置的橫縱座標加上到當前位置的步數,可以借助結構體來實現。廣搜後如果沒有被訪問到的,就是永遠也訪問不了的,記為 1.include include include include using names...

洛谷1443 馬的遍歷 bfs

題意 給乙個n m的棋盤,馬在上面走 規則就是象棋中的規則,詳細見 dx,dy陣列定義 問棋盤上每個點馬都需要走幾步到達。思路 簡單bfs。注意輸出應該用 5d 不加空格 1 include2 include3 include4 include 5 include6 include7 include...

洛谷 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...