暑假集训第三周第二阶段搜索 G - 迷宫问题
来源:互联网 发布:淘宝店铺都多大尺寸 编辑:程序博客网 时间:2024/06/11 14:27
G - 迷宫问题
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uDescription
定义一个二维数组:
它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。
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)
分析:
越来越感觉学习起来很吃力,很多东西都不懂。
只是一道迷宫问题典型的广搜问题,里边还用了模拟队列。各种方法,各种不理解,我什么时候可以会啊
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
#include<stdio.h>#include<string.h>void print (int value ,int prev[25]){ if(value>=0) { int x=value/5; int y=value%5; print(prev[value],prev); printf("(%d, %d)\n",x,y); }}void solve (int m[5][5]){ int v[5][5],queue[25],f=0,r=0,x=0,y=0,prev[25]; memset(v,0,sizeof(v)); memset(prev,-1,sizeof(prev)); prev[0]=-1; int of[4][2]= {1,0,-1,0,0,-1,0,1}; queue[++r]=0; v[x][y]=1; while(f<=r) { int i,newx,newy; f++; x=queue[f]/5; y=queue[f]%5; for(i=0; i<4; i++) { newx=x+of[i][0]; newy=y+of[i][1]; if(newx>=0&&newx<5&&newy>=0&&newy<5&&!v[newx][newy]&&!m[newx][newy]) { r=(r+1)%25; queue[r]=newx*5+newy; prev[newx*5+newy]=x*5+y; v[newx][newy]=1; } } } print(24,prev);}int main(){ int m[5][5],i=0,j=0; while(scanf("%d",&m[i][j++])!=EOF) { if(j==5) { i++; j=0; } if(i==5) { solve(m); i=0; } } return 0;}
0 0
- 暑假集训第三周第二阶段搜索 G - 迷宫问题
- 暑假集训第三周第二阶段 搜索 F - 棋盘问题
- 暑假集训第三周第二阶段 搜索 B - 免费馅饼
- 暑假集训第三周第二阶段 搜索 D - 变形课
- 暑假集训第三周第二阶段 搜索 J - 放苹果
- 暑假集训第三周第二阶段搜索 H - Zipper
- 大暑假集训 第二阶段
- 暑假集训第三周
- 暑假集训第三周 STL G - 487-3279
- 暑假集训第三周周六赛 搜索 E - N皇后问题
- 暑假集训第三周周三赛 STL G - Intelligent IME
- 暑假集训第三周 STL D - 排列
- 暑假集训第三周 STL 双队列
- 暑假集训第三周 STL 网页浏览器
- 【暑假集训专题#搜索】
- 暑假集训-搜索
- 2017暑假第二阶段第三场 总结
- 2014暑假集训搜索专题
- HDU 5316 Magician (线段树区间最值,单点更新)
- unity3d引擎架构之Componet
- sizeof(struct)分析(包括union)
- 重学C++ (一)
- poj解题报告——1023
- 暑假集训第三周第二阶段搜索 G - 迷宫问题
- HDU 4982/BC 6B Goffi and Squary Partition
- http://blog.csdn.net/hellowxwworld/article/details/10720765
- OC_NSString和NSMutableString
- hdoj5334
- GitHub 使用教程图文详解
- HDU 1695 GCD 莫比乌斯第二发
- svn服务器搭建
- eigen的基础配置 以及 cmake下cgal的demo&examples下的配置