迷宫问题
来源:互联网 发布:淘宝店铺客服流程 编辑:程序博客网 时间:2024/05/29 14:04
查看 提交 统计 提问
总时间限制: 1000ms 内存限制: 65536kB
描述
定义一个二维数组:
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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
输入
一个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
样例输出
(0, 0)
(1, 0)
(2, 0)
(2, 1)
(2, 2)
(2, 3)
(2, 4)
(3, 4)
(4, 4)
#include<iostream>#include<cstdio>using namespace std;int a[105][105];int b[105][105];int c[50],d[50];int ans=1;int index=0;void fun(int t1,int t2,int t3,int t4){ int temp=b[t1][t2]; if(t1==t3&&t2==t4) { ans=temp; } temp+=1; if (t1+1<5&&a[t1+1][t2]!=1&&b[t1+1][t2]>temp) { b[t1+1][t2]=temp; fun(t1+1,t2,t3,t4); } if (t2+1<5&&a[t1][t2+1]!=1&&b[t1][t2+1]>temp) { b[t1][t2+1]=temp; fun(t1,t2+1,t3,t4); } if (t1>0&&a[t1-1][t2]!=1&&b[t1-1][t2]>temp) { b[t1-1][t2]=temp; fun(t1-1,t2,t3,t4); } if (t2>0&&a[t1][t2-1]!=1&&b[t1][t2-1]>temp) { b[t1][t2-1]=temp; fun(t1,t2-1,t3,t4); } if (ans==b[t1][t2]) { ans--; c[index]=t1; d[index++]=t2; }}int main(){ for (int i=0;i<5;i++) { for (int j=0;j<5;j++) { cin>>a[i][j]; } } for (int i=0;i<5;i++) { for (int j=0;j<5;j++) { b[i][j]=1000; } } b[0][0]=0;ans=1; fun(0,0,4,4); for (int i=index-1;i>=0;i--) { printf("(%d, %d)\n",c[i],d[i]); } return 0;}
0 0
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题...
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- 迷宫问题
- PL/SQL 数值类型
- java并发多线程
- eclipse配置maven
- 安装配置PHPUnit+Composer
- 校门外的树
- 迷宫问题
- 好的测试实践——软件测试的尽早介入
- JS:正则表达式学习笔记(四) - JS预定义类及边界
- PHP中的use、命名空间、引入类文件、自动加载类的理解
- UIScrollView控件实现图片缩放功能
- Linux驱动技术(三) _DMA编程
- 116.hdu--2084--数塔
- redis实现分布式锁
- 归并排序的实现