博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
迷宫问题
阅读量:5359 次
发布时间:2019-06-15

本文共 2218 字,大约阅读时间需要 7 分钟。

迷宫问题
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 40547   Accepted: 22591

Description

定义一个二维数组: 
int maze[5][5] = { 	0, 1, 0, 0, 0, 	0, 1, 0, 1, 0, 	0, 0, 0, 0, 0, 	0, 1, 1, 1, 0, 	0, 0, 0, 1, 0, };
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

Input

一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。

Output

左上角到右下角的最短路径,格式如样例所示。

Sample Input

0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0

Sample Output

(0, 0)(1, 0)(2, 0)(2, 1)(2, 2)(2, 3)(2, 4)(3, 4)(4, 4)
1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 bool isw[5][5];//标记 8 int a[5][5];//地图 9 int next[4][2] = {
0, 1, 1, 0, 0, -1, -1, 0}; 10 11 struct Node{12 int x;13 int y;14 int s;//记录步数 15 short l[30];//记录路径 16 };17 18 Node bfs()19 {20 queue
q;21 Node cur,nex;22 cur.x = 0; 23 cur.y = 0;24 cur.s = 0;25 isw[cur.x][cur.y] = true;26 //将起点入队 27 q.push(cur);28 while(!q.empty()){29 cur = q.front();30 q.pop();31 if(cur.x==4 && cur.y==4)//当走到4,4点时停止 32 return cur;33 for(int i=0;i<4;i++){34 int nx = cur.x + next[i][0];35 int ny = cur.y + next[i][1];36 if(nx < 0 || nx > 4 || ny < 0 || ny > 4){
//越界 37 continue;38 }39 if(!a[nx][ny] && !isw[nx][ny]){40 isw[nx][ny] = true;41 nex = cur;42 nex.x = nx;43 nex.y = ny;44 nex.s = cur.s + 1;45 nex.l[cur.s] = i;46 47 } 48 q.push(nex); 49 } 50 }51 return cur;52 }53 54 55 int main()56 {57 int i,j;58 for(i=0;i<5;i++){ //读入迷宫59 for(j=0;j<5;j++){60 scanf("%d",&a[i][j]);61 }62 }63 memset(isw,0,sizeof(isw));64 Node ans = bfs();//将最后一个点返回 65 int x,y;66 x = 0,y = 0;67 for(i=0;i<=ans.s;i++){68 printf("(%d, %d)\n",x,y);69 x+=next[ans.l[i]][0];70 y+=next[ans.l[i]][1];71 } 72 return 0;73 }

 

转载于:https://www.cnblogs.com/AGoodDay/p/10657621.html

你可能感兴趣的文章
static 静态
查看>>
【剑指offer】33、二叉搜索树的后序遍历序列
查看>>
svn 基本操作
查看>>
Hyper-v虚拟机联网配置
查看>>
python链表的实现
查看>>
logging模块
查看>>
Alfresco 4.0.d 的同步多个ldap信息问题
查看>>
SpringCloud知识点20190313
查看>>
c#中的Cache缓存技术
查看>>
Oracle 给已创建的表增加自增长列
查看>>
《DSP using MATLAB》Problem 2.17
查看>>
if 循环
查看>>
uva 111 History Grading(lcs)
查看>>
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
Django mysql 改用pymysql 驱动
查看>>
jQuery拖拽原理实例
查看>>