洛谷 P2199 最後的迷宮 (尚賢)

2021-10-05 18:45:41 字數 1679 閱讀 5494

暴力(詳見**)

//存圖時先將牆和邊界都賦值為false,這樣bfs時可以少判邊界

#include

#include

#include

#include

#include

using

namespace std;

struct node

node

(const

int&xx,

const

int&yy,

const

int&tt)};

bool map[

5005][

5005];

//輸入的地圖

bool vis[

5005][

5005];

//判斷走過沒

int n, m, walk[8]

[2]=

,,,,

,,,}

;//棋盤的長, 棋盤的寬, 可以走的四個方向 + 能看到的八個方向(注:walk陣列的前四個方向是上下左右,後八個方向是右上,左上,右下,左下)

void

seach

(const

int&x,

const

int&y,

const

int&ex,

const

int&ey)

;//bfs搜尋並輸出答案

boolpd(

const

int&x,

const

int&y,

const

int&ex,

const

int&ey)

;//判斷是否看到獎盃

intmain()

}int x, y, xx, yy;

while

(scanf

("%d%d%d%d"

,&x,

&y,&xx,

&yy))if

(!map[x]

[y])

seach

(xx, yy, x, y)

;//bfs搜尋

}return0;

}void

seach

(const

int&x,

const

int&y,

const

int&ex,

const

int&ey)

for(

int i =

0; i <4;

++i)}}

printf

("poor harry\n");

//走了那麼久都沒走到的話,就輸出 poor harry

}boolpd(

const

int&x,

const

int&y,

const

int&ex,

const

int&ey)

nx +

= walk[i][0

], ny +

= walk[i][1

];//如果沒看到獎盃,就繼續向下乙個位置看 }}

return

false

;//如果八個方向看完後都沒看到的話,就return false

}

洛谷P2199 最後的迷宮 BFS DFS

給出乙個圖及起點和終點,只要到達終點所在行 列或對角線上且兩點之間沒有牆就算到達終點。求到達終點的最少步數。這道題真的算是藍題嗎。算是很裸的廣搜了。這道題和裸的廣搜其實只有乙個差別 只要到達終點所在行 列或對角線上且兩點之間沒有牆就算到達終點。也就是說,這道題有多個終點,到達任意乙個即可。那麼就直接...

洛谷P2199 最後的迷宮 BFS DFS

給出乙個圖及起點和終點,只要到達終點所在行 列或對角線上且兩點之間沒有牆就算到達終點。求到達終點的最少步數。這道題真的算是藍題嗎。算是很裸的廣搜了。這道題和裸的廣搜其實只有乙個差別 只要到達終點所在行 列或對角線上且兩點之間沒有牆就算到達終點。也就是說,這道題有多個終點,到達任意乙個即可。那麼就直接...

洛谷P2199 最後的迷宮 BFS DFS

給出乙個圖及起點和終點,只要到達終點所在行 列或對角線上且兩點之間沒有牆就算到達終點。求到達終點的最少步數。這道題真的算是藍題嗎。算是很裸的廣搜了。這道題和裸的廣搜其實只有乙個差別 只要到達終點所在行 列或對角線上且兩點之間沒有牆就算到達終點。也就是說,這道題有多個終點,到達任意乙個即可。那麼就直接...