BFS 最小轉彎問題

2022-09-09 05:09:10 字數 1201 閱讀 5288

description

給出一張地圖,這張地圖被分為 n×m(n,m<=100)個方塊,任何乙個方塊不是平地就是高山。平地可以通過,高山則不能。現在你處在地圖的(x1,y1)這塊平地,問:你至少需要拐幾個彎才能到達目的地(x2,y2)?你只能沿著水平和垂直方向的平地上行進,拐彎次數就等於行進方向的改變(從水平到垂直或從垂直到水平)的次數。例如:如圖 1,最少的拐彎次數為5。

input

第 1行:n m 第 2至n+1行:整個地圖地形描述(0:空地;1:高山), 如圖,第2行地形描述為:1 0 0 0 0 1 0 第3行地形描述為:0 0 1 0 1 0 0 …… 第n+2行:x1 y1 x2 y2 (分別為起點、終點座標)

output

s (即最少的拐彎次數)

sample input

5 71 0 0 0 0 1 0

0 0 1 0 1 0 0

0 0 0 0 1 0 1

0 1 1 0 0 0 0

0 0 0 0 1 1 0

1 3 1 7

sample output

**

#include

#include

using

namespace std;

const

int dx[5]

=;const

int dy[5]

=;int n,m,a[

10005][

10005

],x1,y1,x2,y2,st[

1005][

4];void

bfs(

) tail++

; a[x]

[y]=1;

st[tail][1

]=x;

st[tail][2

]=y;

st[tail][3

]=st[head][3

]+1;

//是st[head][3]的轉彎數加一

x+=dx[i]

; y+

=dy[i];}

}}while

(headintmain()

最小轉彎問題(bfs)

涉及考點 bfs 寬度優先搜尋算 題目描述 給出一張地圖,這張地圖被分為 n m n,m 100 個方塊,任何乙個方塊不是平地就是高山。平地可以通過,高山則不能。現在你處在地圖的 x1,y1 這塊平地,問 你至少需要拐幾個彎才能到達目的地 x2,y2 你只能沿著水平和垂直方向的平地上行進,拐彎次數就...

SSL P2325 最小轉彎問題

給出一張地圖,這張地圖被分為 n m n,m 100 個方塊,任何乙個方塊不是平地就是高山。平地可以通過,高山則不能。現在你處在地圖的 x1,y1 這塊平地,問 你至少需要拐幾個彎才能到達目的地 x2,y2 你只能沿著水平和垂直方向的平地上行進,拐彎次數就等於行進方向的改變 從水平到垂直或從垂直到水...

字元大小轉化

一 根據仿宋 gb2312字反覆測試收集到資料,用字元跨度 行跨度與字型字型大小的關係 來說明。字元跨度 行跨度與字型字型大小的關係 對以上表認真分析,可以得到行 字元網格的準確定義 行高就是行跨度 其最小值大於預設字型的高度,是預設字型的高度的1.36倍 另外,行高不能小於15.6磅,所有小於五號...