NYOJ - 58 最小步数
来源:互联网 发布:展柜制作成本核算软件 编辑:程序博客网 时间:2024/05/16 16:17
直接从给出的起点开始用QUEUE进行BFS就行,因为图式给出的固定的,所以难度不是太大。
这有一个迷宫,有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<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。 - 输出
- 输出最少走几步。
- 样例输入
23 1 5 73 1 6 7
- 样例输出
1211
下面是代码:
#include <cstdio>#include <cstring>#include <queue>using namespace std;struct node{ int i, j, step;};int maps[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 toward[4][2] = {{-1,0}, {1, 0}, {0,1}, {0,-1}};bool vis[9][9];int step;int start_x, start_y;int end_x, end_y;int BFS();int main(){ int T; scanf("%d", &T); for (int i = 0; i < T; ++i) { memset(vis, false, sizeof(vis)); scanf("%d%d", &start_x, &start_y); scanf("%d%d", &end_x, &end_y); printf("%d\n", BFS()); } return 0;}int BFS(){ queue<node> Q; node cur, tmp; cur.i = start_x; cur.j = start_y; cur.step = 0; Q.push(cur); while (!Q.empty()) { cur = Q.front(); Q.pop(); if (cur.i == end_x && cur.j == end_y) return cur.step; for (int i = 0; i < 4; ++i) { tmp.i = cur.i + toward[i][0]; tmp.j = cur.j + toward[i][1]; tmp.step = cur.step + 1; if (tmp.i >= 0 && tmp.i <= 8 && tmp.j >= 0 && tmp.j <= 8 && vis[tmp.i][tmp.j] == false && maps[tmp.i][tmp.j] == 0) { Q.push(tmp); vis[tmp.i][tmp.j] = true; } } } return -1;}
0 0
- nyoj 58 最小步数
- NYOJ 58 最小步数
- nyoj 58 最小步数
- NYOJ - 58 最小步数
- NYOJ 58 最小步数
- NYOJ~58~最小步数
- nyoj最小步数
- nyoj-最小步数
- NYOJ-58 最小步数 AC
- nyoj 58 最小步数
- NYOJ 题目58最小步数
- NYOJ 58 最小步数【bfs】
- NYOJ-58-最小步数(搜索)
- nyoj 58 最小步数(bfs)
- NYOJ 58 最小步数【bfs&dfs】
- NYOJ 题目58 最小步数
- NYOJ 58 最小步数(BFS)
- nyoj 58 最小步数(入门bfs)
- 通过Eclipse(CDT)使用OpenCV
- 构建基于Spring4的Rest API
- LTE PWS CMAS CBS msg
- SGI STL容器概述
- STL之set集合容器
- NYOJ - 58 最小步数
- 应用沙河路径下都有啥么?
- 42、jQuery(4)
- 性能更好的js动画实现方式——requestAnimationFrame
- CORS 头缺少 'Access-Control-Allow-Origin'(跨域访问不允许)
- Android 关于.9图片the file is not a PNG
- 滑雪(记忆化搜索)
- AndroidStudio项目提交到github详细步骤
- 用python的一些总结