【洛谷】马的遍历--广度优先搜索(BFS)
生活随笔
收集整理的這篇文章主要介紹了
【洛谷】马的遍历--广度优先搜索(BFS)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
傳送門:https://www.luogu.com.cn/problem/P1443
有一個n*m的棋盤(1<n,m<=400),在某個點上有一個馬,要求你計算出馬到達棋盤上任意一個點最少要走幾步
輸入格式
一行四個數據,棋盤的大小和馬的坐標
輸出格式
一個n*m的矩陣,代表馬到達某個點最少要走幾步(左對齊,寬5格,不能到達則輸出-1)
輸入樣例
3 3 1 1輸出樣例
0 3 2 3 -1 1 2 1 4棋盤最少步數到達某個點,比較常見的廣度優先搜索(BFS)。首先馬走日,體現在棋盤上,就是在不越界的情況下遍歷八個方向,這個以dx,dy數組定義方向。首先將馬的節點入隊,該點記錄步數為0,同時vis數組記錄已經訪問。之后遍歷八個方向,如果滿足條件,將新節點入隊,同時該節點步數為上一個節點步數加1,vis數組記錄已遍歷,直至隊列為空,將馬可以走到的點全部遍歷完。
題目為比較常規的BFS,首先初始化棋盤均為-1,即初始狀態全部不可達,最后輸出注意左對齊的輸出,這里使用printf的“-5d"格式化輸出。
總結
以上是生活随笔為你收集整理的【洛谷】马的遍历--广度优先搜索(BFS)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 心中有“树”:数据结构之树详解
- 下一篇: 【蓝桥杯】子串分值---笔记