Trusty Tahr(记录路径)
来源:互联网 发布:知行英语综合教unit4 编辑:程序博客网 时间:2024/06/05 12:43
代码来源:http://blog.csdn.net/irene_ruru/article/details/46458287
D:迷宫问题
- 总时间限制:
- 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 00 1 0 1 00 0 0 0 00 1 1 1 00 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<stdio.h>using namespace std;int maze[5][5];int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};struct node{ int x,y; int pre;}p[1000];bool is(int x,int y){ if(x>=0&&x<=4&&y>=0&&y<=4) return true; else return false;}void print(int x_){ if(p[x_].pre==-1) return; print(p[x_].pre);//如果不是初始点,就再调用前一个 printf("(%d, %d)\n",p[x_].x,p[x_].y); return;}void bfs(int x_,int y_){ p[0].x=x_; p[0].y=y_; p[0].pre=-1; int front=0,rear=1; while(front<rear)//终止条件 { for(int i=0;i<4;++i) { int tempx=p[front].x+dx[i]; int tempy=p[front].y+dy[i]; if(is(tempx,tempy)&&maze[tempx][tempy]==0)//判断(tempx,tempy)是否在迷宫内且能不能走 { maze[tempx][tempy]=1; p[rear].x=tempx; p[rear].y=tempy; p[rear].pre=front; rear++;//当rear不能再增加时,front==rear } if(tempx==4&&tempy==4) { print(front); return ; } } front++; } return ;}int main(){ for(int i=0;i<5;++i) for(int j=0;j<5;++j) cin>>maze[i][j]; printf("(0, 0)\n"); bfs(0,0); printf("(4, 4)\n"); return 0;}
- 总时间限制:
- 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 00 1 0 1 00 0 0 0 00 1 1 1 00 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<stdio.h>using namespace std;int maze[5][5];int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};struct node{ int x,y; int pre;}p[1000];bool is(int x,int y){ if(x>=0&&x<=4&&y>=0&&y<=4) return true; else return false;}void print(int x_){ if(p[x_].pre==-1) return; print(p[x_].pre);//如果不是初始点,就再调用前一个 printf("(%d, %d)\n",p[x_].x,p[x_].y); return;}void bfs(int x_,int y_){ p[0].x=x_; p[0].y=y_; p[0].pre=-1; int front=0,rear=1; while(front<rear)//终止条件 { for(int i=0;i<4;++i) { int tempx=p[front].x+dx[i]; int tempy=p[front].y+dy[i]; if(is(tempx,tempy)&&maze[tempx][tempy]==0)//判断(tempx,tempy)是否在迷宫内且能不能走 { maze[tempx][tempy]=1; p[rear].x=tempx; p[rear].y=tempy; p[rear].pre=front; rear++;//当rear不能再增加时,front==rear } if(tempx==4&&tempy==4) { print(front); return ; } } front++; } return ;}int main(){ for(int i=0;i<5;++i) for(int j=0;j<5;++j) cin>>maze[i][j]; printf("(0, 0)\n"); bfs(0,0); printf("(4, 4)\n"); return 0;}
0 0
- Trusty Tahr(记录路径)
- Writing Japanese with Ubuntu 14.04 Trusty Tahr
- 2.5Ubuntu 14.04 LTS (Trusty Tahr)
- Install MariaDB Server 10.0 on Ubuntu 14.04 LTS ( Trusty Tahr )
- Install Ganglia on Ubuntu 14.04 Server (Trusty Tahr)
- Ubuntu 14.04 (Trusty Tahr) LTS 发布已提供下载
- Ubuntu 14.04 LTS (Trusty Tahr) 64 bits安装opencv3.0.0beta
- How to install the latest Nvidia drivers on Ubuntu 14.04 Trusty Tahr
- Farewell(告别)from your trusty tester.
- Uva624 CD (记录路径)
- UVA 624(记录路径)
- 01背包记录路径)
- 走迷宫(广搜路径记录(路径唯一))
- Dijkstra算法-单源最短路径(包括路径记录)
- dijkstra算法-最短路径(包含路径记录)
- 图论---最短路(记录路径)
- HDU 1026 (BFS+记录路径)
- Uva624(记录路径的01背包)
- Android 系统架构
- matlab 激活
- 第九套
- c/c++9个冷门问题
- CentOS7下yum安装mysql配置多实例
- Trusty Tahr(记录路径)
- C++之*.h和*.cpp文件详解
- 766B Mahmoud and a Triangle
- jquery中attr和prop的区别
- 将正式数据库中的表与测试库同步
- 【重要信息】博客转移!!!
- linux查看文件大小
- MFC应用框架
- 我的前端入职之路