NYOJ58最少步數 BFS

2021-07-04 08:47:16 字數 1246 閱讀 2046

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度: 4

描述 這有乙個迷宮,有0~8行和0~8列:

1,1,1,1,1,1,1,1,1

1,0,0,1,0,0,1,0,1

1,0,0,1,1,0,0,0,1

1,0,1,0,1,1,0,1,1

1,0,0,0,0,1,0,0,1

1,1,0,1,0,1,0,0,1

1,1,0,1,0,1,0,0,1

1,1,0,1,0,0,0,0,1

1,1,1,1,1,1,1,1,1

0表示道路,1表示牆。

現在輸入乙個道路的座標作為起點,再如輸入乙個道路的座標作為終點,問最少走幾步才能從起點到達終點?

(注:一步是指從一座標點走到其上下左右相鄰座標點,如:從(3,1)到(4,1)。)

輸入

第一行輸入乙個整數n(0

輸出輸出最少走幾步。

樣例輸入

2

3 1 5 7

3 1 6 7

樣例輸出

12

11

/*bfs***/

#include#include#include#define max 0xfffffff

using namespace std;

int ans[9]=;

int x,y,ex,ey,arr[15][15],cnt;

int map[9][9]=;

struct node

a,b;

int judge (struct node h)

void bfs()

{ a.x=x;

a.y=y;

a.tp=0;

memset(arr,0,sizeof(arr));

queueq;

arr[x][y]=1;

q.push(a);

while (!q.empty())

{ a=q.front();

q.pop();

for (int i=0;i<8;i+=2)

{ b.x=a.x+ans[i];

b.y=a.y+ans[i+1];

b.tp=a.tp+1;

if (judge(b))

{if (b.x==ex&&b.y==ey)

{if (b.tp

/*bfs和優先

NYOJ 58 最少步數 bfs

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,...

nyoj 58 最少步數 BFS

記憶體限制 64mb 時間限制 3000ms special judge no accepted 17 submit 22 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,...

NYOJ 58 最少步數

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,...