NYOJ ~ 58 ~ 最小步数(BFS)
2018-04-01 16:00
351 查看
代码如下:#include<bits/stdc++.h>
using namespace std;
const int MAXN = 15;
struct Node
{
int x,y,steps;
}NOW,NEXT;
int MAP[9][9]={
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};
int sx,sy,ex,ey;
int dir[4][2] = {{1,0},{-1,0},{0,-1},{0,1}};
bool vis[15][15];
int bfs()
{
memset(vis,0,sizeof(vis));
NOW.x = sx; NOW.y = sy; NOW.steps = 0; vis[sx][sy] = true;
queue<Node> q;
q.push(NOW);
while(!q.empty())
{
NOW = q.front();
if(NOW.x == ex && NOW.y == ey) return NOW.steps;
q.pop();
for(int i = 0; i < 4; i++)
{
int X = NOW.x + dir[i][0], Y = NOW.y + dir[i][1];
if(X >= 0 && Y >= 0 && X < 9 && Y < 9 && vis[X][Y] == false && MAP[X][Y] == 0)
{
vis[X][Y] = true;
NEXT.x = X; NEXT.y = Y; NEXT.steps = NOW.steps + 1;
q.push(NEXT);
}
}
}
return 0;
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>sx>>sy>>ex>>ey;
cout<<bfs()<<endl;
}
return 0;
}
using namespace std;
const int MAXN = 15;
struct Node
{
int x,y,steps;
}NOW,NEXT;
int MAP[9][9]={
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};
int sx,sy,ex,ey;
int dir[4][2] = {{1,0},{-1,0},{0,-1},{0,1}};
bool vis[15][15];
int bfs()
{
memset(vis,0,sizeof(vis));
NOW.x = sx; NOW.y = sy; NOW.steps = 0; vis[sx][sy] = true;
queue<Node> q;
q.push(NOW);
while(!q.empty())
{
NOW = q.front();
if(NOW.x == ex && NOW.y == ey) return NOW.steps;
q.pop();
for(int i = 0; i < 4; i++)
{
int X = NOW.x + dir[i][0], Y = NOW.y + dir[i][1];
if(X >= 0 && Y >= 0 && X < 9 && Y < 9 && vis[X][Y] == false && MAP[X][Y] == 0)
{
vis[X][Y] = true;
NEXT.x = X; NEXT.y = Y; NEXT.steps = NOW.steps + 1;
q.push(NEXT);
}
}
}
return 0;
}
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>sx>>sy>>ex>>ey;
cout<<bfs()<<endl;
}
return 0;
}
相关文章推荐
- NYOJ 58 最小步数(BFS && DFS)
- nyoj 58 最小步数 dfs与bfs均可
- nyoj 58 最小步数(入门bfs)
- nyoj58最小步数——BFS
- nyoj——58 最小步数(DFS,BFS 迷宫问题)
- NYOJ ~ 58 ~ 最小步数(BFS)
- NYOJ 58 最小步数【bfs】
- NYOJ 58 最小步数(bfs)
- nyoj 58 最小步数(bfs)
- NYOJ 58 最小步数(BFS)
- nyoj 58 最小步数问题 BFS
- NYOJ-58 最小步数
- NYOJ 58 最小步数(迷宫搜索)
- nyoj 58 最小步数(回溯算法应用)
- NYOJ 题目58 最小步数
- 最小步数 n 58 bfs
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
- 最小步数 n 58 bfs
- NYOJ 题目58最小步数
- nyoj-58-最小步数