原題點 這裡這是一道很適合練習寬度優先搜尋的題目。
關於本題的寬度優先搜尋,有幾個小技巧:
**如下:
#include
#include
#include
using
namespace
std;
const
int maxn= 405;
struct unit map[maxn][maxn];
// 地圖尺寸、源點座標
int map_line, map_col, original_line, original_col;
// 初始化資料。
void init()
}}struct pos;
// 馬可以跳到的 8 個位置的座標偏移量。
pos delta[8]=,,,
,,,,
};queue
q;void bfs(int line, int col)); // 源點入隊。
map[line][col].cnt= 0; // 到達源點的步數為 0 。
map[line][col].inq= true; // 記錄源點入過隊。
while(!q.empty());
//printf("center: %d %d, near: %d %d\n", pnow.line, pnow.col, pnear.line, pnear.col);
// 判斷該點下標是否合法。
if(pnear.line<1 || pnear.line>map_line || pnear.col<1 || pnear.col>map_col) continue;
// 合法則獲取相應 unit 引用。
unit &unear= map[pnear.line][pnear.col];
// 如果入過隊則跳過。
if(unear.inq) continue;
//printf("push: %d %d, center: %d %d\n", pnear.line, pnear.col, pnow.line, pnow.col);
// 記得將入隊點的 inq 標記為 true,更新 cnt 。
q.push(pnear);
unear.cnt= unow.cnt+1;
unear.inq= true;}}
}int main()
putchar('\n');
}return
0;}
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...