> Description
如下图12×12方格图,找出一条自入口(2,9)到出口(11,8)的最短路径。


> Input


> Output


> Sample Input
12 //迷宫大小
2 9 11 8 //起点和终点
1 1 1 1 1 1 1 1 1 1 1 1 //邻接矩阵,0表示通,1表示不通
1 0 0 0 0 0 0 1 0 1 1 1
1 0 1 0 1 1 0 0 0 0 0 1
1 0 1 0 1 1 0 1 1 1 0 1
1 0 1 0 0 0 0 0 1 0 0 1
1 0 1 0 1 1 1 1 1 1 1 1
1 0 0 0 1 0 1 0 0 0 0 1
1 0 1 1 1 0 0 0 1 1 1 1
1 0 0 0 0 0 1 0 0 0 0 1
1 1 1 0 1 1 1 1 0 1 0 1
1 1 1 1 1 1 1 0 0 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1


> Sample Output

(2,9)->(3,9)->(3,8)->(3,7)->(4,7)->(5,7)->(5,6)->(5,5)->(5,4)->(6,4)->(7,4)->(7,3)->(7,2)->(8,2)->(9,2)->(9,3)->(9,4)->(9,5)->(9,6)->(8,6)->(8,7)->(8,8)->(9,8)->(9,9)->(10,9)->(11,9)->(11,8)
27


> 解题思路
这一题用广搜解。
a[maxn][maxn]表示矩形方阵;f[maxnmaxn]表示列队;
s[maxn
maxn][3],1表示当前点的横坐标,2表示纵坐标,记录状态。
如果当前的位置可以走的话就tail加1,把当前位置的父结点加入队列;当现在的head(父结点)已经没有子结点的话,就把head加1,把上一个已经没有子结点的父结点退出队列。
只要是走过的路线都要把它赋值为1(障碍),防止有重复的路线,而且先到某一个路线的一定是最快最优的。

然后就像这样>>


> 代码

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int d1[5]={0,-1,0,0,1},d2[5]={0,0,-1,1,0};
//这里是表示当前位置的四条路线
const int maxn=1001;
int a[maxn][maxn],f[maxn*maxn],s[maxn*maxn][3];
int n,a1,b1,a2,b2,len;bool aka(int q1,int q2)
{if(a[q1][q2]==1) return false;return true;
}//判断是否越界void output(int x)
{if(x==1) return;len++;output(f[x]);printf("->(%d,%d)",s[x][1],s[x][2]);
}void lil()
{int h=0,t=1;f[t]=0;//第一个的父结点一定是0s[1][1]=a1; s[1][2]=b1;a[a1][b1]=1;//把起点看做是走过了,设为障碍do{h++;for(int k=1;k<=4;k++){if(aka(s[h][1]+d1[k],s[h][2]+d2[k])){t++;f[t]=h;//把这一个路线加入队列s[t][1]=s[h][1]+d1[k];s[t][2]=s[h][2]+d2[k];a[s[t][1]][s[t][2]]=1;//走过的设为障碍1}if(s[t][1]==a2&&s[t][2]==b2)//当已经到达终点就输出返回{len=1;printf("(%d,%d)",a1,b1);output(t);printf("\n%d",len);return;}}}while(h<=t);
}int main()
{memset(a,1,sizeof(a));//不管是障碍还是界限外,都把它看为是障碍1scanf("%d%d%d%d%d",&n,&a1,&b1,&a2,&b2);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&a[i][j]);lil();return 0;
}

电子老鼠闯迷宫【BFS】相关推荐

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

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

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

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

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

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

  4. NOJ 1042 电子老鼠闯迷宫

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

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

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

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

    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单元的正方形迷宫,黑色部分表示建筑物,白色部分是路.电子老鼠可以在路上向上.下.左.右行走,每一步走一个格子.现 ...

  10. 算法实验三 Problem B电子老鼠闯迷宫

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

最新文章

  1. 论文标题,这么写才算好!
  2. mybatis 使用jdbc_MyBatis笔记一
  3. Kotlin函数中默认参数
  4. [JavaScript]利用JavaScript控制table中row的显示
  5. 手持终端可以根据行业的功能要求进行定制
  6. python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python
  7. 你的输入法都暴露了些啥?
  8. Spring Boot 发布 jar 包转为 war 包秘籍。
  9. Python二级笔记(6)
  10. win7 64 位用VMware安装Ubantu 20130908
  11. 2017-2018-1 20155227 《信息安全系统设计基础》第十一周学习总结
  12. spark源码分析之任务调度篇
  13. java排序算法学习(一)--冒泡排序
  14. html css:背景图片链接css写法
  15. 3. PDOStatement 对象
  16. SQL 通配符 、分页 功能的学习
  17. 给ubuntu设置静态ip —— How to set static IP Address in Ubuntu Server 16.04
  18. WebAPI HelpPage出现Failed to generate the sample for media type 'application/x-www-form-urlencoded'. 错
  19. 邮件服务器mx记录,学习邮件服务器之MX记录
  20. 测试网上哪款软件最好,手机测试软件哪款好用?4款测试软件推荐

热门文章

  1. mysql导入文件_mysql导入txt文件
  2. php抓取网页内容实例,php中抓取网页内容的实例详解
  3. 用python+vue+node开发单页面网站
  4. spring的控制反转和依赖注入讲解
  5. C++惨遭吐槽?最难学的编程语言TOP5出炉
  6. %3c故乡%3e中语言描写的作用是什么,语言描写的作用
  7. fifa足球世界服务器正在维修,FIFA足球世界
  8. 【众智实验二】山东大学软件学院众智实验二、友谊悖论验证(java)
  9. vscode关闭C/C++红色波浪线
  10. 八皇后,N皇后及其变种问题