NYOJ 58 最少步数 (DFS)
2016-06-05 12:48
295 查看
题目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,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)分别表示起点的行、列,终点的行、列。
输出输出最少走几步。
样例输入
样例输出
题目信息
运行结果
本题排行
讨论区
最少步数
时间限制: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<n<=100),表示有n组测试数据;
随后n行,每行有四个整数a,b,c,d(0<=a,b,c,d<=8)分别表示起点的行、列,终点的行、列。
输出输出最少走几步。
样例输入
2 3 1 5 7 3 1 6 7
样例输出
12 11
#include <iostream> #include <cstring> using namespace std; int maze[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 vis[9][9]; int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; int t, a, b, c, d; int min1; void dfs(int x, int y, int ans) { if (x == c && y == d){ if (ans < min1){ min1 = ans; } return; } for (int i = 0; i < 4; i++){ int dx = x + dir[i][0]; int dy = y + dir[i][1]; if (dx < 1 || dx > 8 || dy < 1 || dy > 8) continue; if (maze[dx][dy] == 0 && vis[dx][dy] == 0){ vis[dx][dy] = 1; dfs(dx, dy, ans + 1); vis[dx][dy] = 0; } } } int main() { cin >> t; while (t--){ min1 = 999999; memset(vis, 0, sizeof(vis)); cin >> a >> b >> c >> d; dfs(a, b, 0); cout << min1 << endl; } return 0; }
相关文章推荐
- Django开发自己的博客系统
- Django开发自己的博客系统
- 26. Remove Duplicates from Sorted Array [easy] (Python)
- Mysql-proxy中的lua脚本编程(一)
- wpf ,只能窗口调整高度,并且设定最小值。
- OutputStream 写入文件(追加方式)
- 聊一聊HTML <!DOCTYPE> 标签
- MySQL索引类型介绍
- 贪吃蛇
- Project Euler 29
- WPF DataGrid 获取选中的当前行某列值
- 工作中使用SOAP UI测试接口
- JDBC连接数据库(1)
- 软件工程课程总结
- Springmvc基础三之注解深入学习
- C#基础----方法与构造函数
- eclipse的.properties文件中文显示问题
- OutputStream 写入文件小例子(覆盖源文件)
- C++标准里 string和wstring
- Tfs服务器迁移(更改IP)后客户端(vs2013)配置方法