J-迷宫问题

来源:互联网 发布:指纹膜 淘宝 编辑:程序博客网 时间:2024/06/08 18:31

定义一个二维数组: 
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)
解题思路:这一道题属于BFS迷宫问题的基础题型,但是菜鸟的我还是弄了好久安静,一直弄不明白最短的路径是怎么标记的,自己调试了好久。

#include<stdio.h>int xi[4]={0,0,-1,1};int yi[4]={-1,1,0,0};int x[100][100];int xr[100],yr[100],pre[100];int s=0,e=1;void par(int i){if(pre[i]!=-1){par(pre[i]);printf("%d %d\n",xr[i],yr[i]);}}void BFS(int a,int b){int i;xr[s]=a;yr[s]=b;pre[s]=-1;while(s<e){for(i=0;i<4;i++){a=xr[s]+xi[i];b=yr[s]+yi[i];if(a<0||b<0||a>=5||b>=5||x[a][b]==1)continue;else{x[a][b]=1;xr[e]=a;yr[e]=b;pre[e]=s;e++;}if(a==4&&b==4)par(s);}s++;}}int main(){int i,j;for(i=0;i<5;i++)for(j=0;j<5;j++){scanf("%d",&x[i][j]);}printf("0 0\n");BFS(0,0);printf("4 4\n");}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 联通宽带无信号怎么办 话费余额多的怎么办? 联通卡销号话费怎么办 销户手机卡余额怎么办 手机卡销户余额怎么办 链家买房违约怎么办 usb硬件坏了怎么办 手机硬盘坏了怎么办 商家保修又不来修怎么办 淘宝买到坏的东西怎么办 淘宝手机买到坏的怎么办 空调挂机显示f7怎么办 冰箱冷冻室有霜怎么办 冰箱冷冻有霜怎么办 冰箱冷冻霜大怎么办 冰箱冷冻冻不是怎么办 套现被骗了怎么办 云易签逾期不还怎么办 q币充值卡过期了怎么办 用白条支付退货怎么办 买房首付后尾款怎么办 新世界卡过期了怎么办 冰箱下面门关不紧怎么办 冰箱冰堵了怎么办 冰箱毛细管冰堵怎么办 空调毛细管冰堵怎么办 冰箱老是冰堵怎么办 海尔冰箱冰堵怎么办 冰箱忘记关门会怎么办 冰箱忘了关门怎么办 冰箱霜冻后了怎么办 冰柜结冰太厚怎么办 冰箱霜冻太厚怎么办 霜冻之蓝掉色怎么办 冰箱管路冰堵怎么办 冰箱缝隙进虫怎么办 冰箱门不吸了怎么办 新冰箱门关不严怎么办 冰箱不除霜会怎么办 压缩机冰箱油堵怎么办 冰箱封条没有吸力怎么办