Problem B

电子老鼠闯迷宫

时限:1000ms 内存限制:10000K 总时限:3000ms

描述:

有一只电子老鼠被困在如下图所示的迷宫中。这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。现给定一个起点S和一个终点T,求出电子老鼠最少要几步从起点走到终点。
输入:

本题包含一个测例。在测例的第一行有四个由空格分隔的整数,分别表示起点的坐标S(x.y)和终点的坐标T(x,y)。从第二行开始的12行中,每行有12个字符,描述迷宫的情况,其中'X'表示建筑物,'.'表示路.

输出:

输出一个整数,即电子老鼠走出迷宫至少需要的步数。

输入样例:

2 9 11 8
XXXXXXXXXXXX
X......X.XXX
X.X.XX.....X
X.X.XX.XXX.X
X.X.....X..X
X.XXXXXXXXXX
X...X.X....X
X.XXX...XXXX
X.....X....X
XXX.XXXX.X.X
XXXXXXX..XXX
XXXXXXXXXXXX

输出样例:

2

#include <iostream>
#include <queue>
using namespace std;
//queue <rec> q;
char s[15][15];
int d[15][15];
int start_x, start_y, end_x, end_y;struct rec {int second;int first;
};
queue <rec> q;int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};bool can(int x, int y) {if (x < 1 || y < 1 || y > 12 || x > 12) {return false;}if (s[x][y] == 'X') {return false;}return true;
}int main() {cin >> start_x >> start_y >> end_x >> end_y;for (int i = 1; i <= 12; i++) {for (int j = 1; j <= 12; j++) {cin >> s[i][j];}}memset(d, -1, sizeof(d));d[start_x][start_y] = 0;rec temp;temp.first = start_x;temp.second = start_y;q.push(temp);while (q.size()) {rec now = q.front();q.pop();for (int i = 0; i < 4; i++) {rec next;next.first = now.first + dx[i];next.second = now.second + dy[i];if (!can(next.first, next.second)) {continue;}if (d[next.first][next.second] == -1) {d[next.first][next.second] = d[now.first][now.second] + 1;q.push(next);}}}cout << d[end_x][end_y] << endl;return 0;
}

算法实验三 Problem B电子老鼠闯迷宫相关推荐

  1. 算法实验三 【电子老鼠闯迷宫】分支限界

    算法实验三 [电子老鼠闯迷宫]分支限界 1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元 ...

  2. NOJ1042——算法实验三——电子老鼠闯迷宫

    电子老鼠闯迷宫 描述: 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路.电子老鼠可以在路上向上.下.左.右行走,每一步走一个格子.现给定一 ...

  3. 【NOJ1042】【算法实验三】电子老鼠闯迷宫

    1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部 ...

  4. 电子老鼠闯迷宫(BFS)

    电子老鼠闯迷宫 Description 如下图12×12方格图,找出一条自入口(2,9)到出口(11,8)的最短路径. Input Output Sample Input 12 //迷宫大小 2 9 ...

  5. 1042电子老鼠闯迷宫 (广搜)

    1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K  总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色 ...

  6. NOJ 1042 电子老鼠闯迷宫

    2016.11.3 [题目描述] 1042.电子老鼠闯迷宫 时限:1000ms 内存限制:10000K 总时限:3000ms 描述 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方 ...

  7. (ssl1455)电子老鼠闯迷宫

    电子老鼠闯迷宫 Time Limit:1000MS  Memory Limit:65536K Total Submit:151 Accepted:107 Description 如下图12×12方格图 ...

  8. 1042 电子老鼠闯迷宫

    电子老鼠闯迷宫 时限:1000ms 内存限制:10000K 总时限:3000ms 描述: 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路. ...

  9. NOJ电子老鼠闯迷宫

    NOJ电子老鼠闯迷宫 描述: 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路.电子老鼠可以在路上向上.下.左.右行走,每一步走一个格子.现 ...

最新文章

  1. BZOJ——1202: [HNOI2005]狡猾的商人
  2. Ubuntu16.04系统下汉字显示为方框解决办法(图文详解)
  3. python哪里下载import包-【Python实战】模块和包导入详解(import)
  4. Vista下硬盘管理
  5. apk的签名文件(两次Hash+加密)
  6. C++彩色数据流动界面
  7. 导致集群重启_干货丨如何水平扩展和垂直扩展DolphinDB集群?
  8. 多线程讲座【by lilei005】
  9. 02205微型计算机原理与接口技术自考,2012年微型计算机原理与接口技术自考题模拟(2)...
  10. Common lisp编译成C的bin(二)
  11. Java Access Specifier (不同的访问修饰符)
  12. SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
  13. eos utility中文版v3.7.0
  14. python 视频解析接口_python接口自动化测试视频教程全集
  15. python运行内存不足_python svm内存不足怎么解决?
  16. 谁说大象不能跳舞读后感
  17. 微信用户提现功能 显示NO_AUTH | 产品权限验证失败,请查看您当前是否具有该产品的权限(企业付款到零钱 银行卡)
  18. tui-editor富文本编辑器组件
  19. linux秘钥对生成器,linux – GPG密钥生成器*不*使用熵
  20. [开源工具]2022/2023免费临时邮箱(Temp Free Mail)

热门文章

  1. eclipse java开发插件_10大Java开发必备的Eclipse插件
  2. 纸质合同和电子合同的区别
  3. 阻焊设计~焊盘阻焊开窗、阻焊桥
  4. 四节1.5V的5号电池、一个电容、一个12V的报警蜂鸣器、铜线和螺母,在螺母所栓的铜线触发接通电源后,缓慢放电10秒,制作一个简易震动报警器,需要用什么样的电容合适?...
  5. element admin跨域问题解决
  6. NW.js之入门篇(1)
  7. Java中的四种访问修饰符:public、default、protect和private
  8. jquery 列表hover效果 ,css :hover ,jquery 事件委托,jquery hover()方法
  9. Python动态演示旋转矩阵的作用
  10. Oracle中主键和唯一索引的区别oracle中联合主键的作用