NYOJ 58 最少步數 DFS

2021-07-03 06:37:09 字數 1451 閱讀 7937

時間限制:

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

#include #include #include #include using namespace std;

int ans[9][9]=,

, ,, ,

, ,, ,

};const int dir[4][2]=,,,};

int dp[9][9];

int m1,m2,m3,m4,s;

void dfs(int lhs, int rhs,int ***)

++***;

ans[lhs][rhs]=1;

for(int i=0;i<4;i++)

ans[lhs][rhs]=0;

}int main()

node;

const int ans[9][9]=,

, ,, ,

, ,, ,

};const int dir[4][2]=,,,};

int dp[9][9];

int visited[9][9];

node m3;

void bfs(node t)

} t=q.front();

q.pop(); }}

int main()

{ int n;

node m1;

cin>>n;

while(n--)

{ cin>>m1.lhs>>m1.rhs>>m3.lhs>>m3.rhs;

memset(dp,0,sizeof(dp));

memset(visited,0,sizeof(visited));

visited[m1.lhs][m1.rhs]=1;

bfs(m1);

cout<

NYOJ 58 最少步數 DFS

時間限制 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 最少步數(DFS)

時間限制 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 最少步數(dfs)

時間限制 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,...