035_迷宫最短路径
来源:互联网 发布:网络招生宣传方案 编辑:程序博客网 时间:2024/04/29 07:51
经典的BFS问题, 貌似amazon有道题和这个挺像的~~
参见《挑战程序竞赛》第二版34页。 用队列实现比较方便。
依旧XCODE 蛋疼中。废话不多说了,直接po c++代码。
//// 035_bfs.cpp// changlle//// Created by user on 12/24/15.// Copyright (c) 2015 user. All rights reserved.//#include <iostream>#include <queue>using namespace std;const int INF=100000000;typedef pair<int, int> P;char maze[5][5]={ {'#','s','#','.','#',}, {'#','.','.','.','#',}, {'#','.','#','.','#',}, {'#','.','#','.','#',}, {'#','.','#','g','#',},};int N=5,M=5;int sx=0, sy=1;int gx=4,gy=3;int d[5][5];int dx[4]={1,0,-1,0}, dy[4]={0,-1,0,1};int bfs();int main (){ int dis=bfs(); cout<<dis<<endl; for (int i=0;i<N;i++){ for (int j=0;j<M;j++){ cout<< d[i][j]<<" "; } cout<<endl; } return 0;}int bfs(){ for (int i=0;i<N;i++) for (int j=0;j<M;j++) d[i][j]=INF; d[sx][sy]=0; queue<P> que; que.push(P(sx,sy)); while (que.size()) { P now=que.front(); que.pop(); for (int i=0;i<4;i++){ int tempx=now.first+dx[i]; int tempy=now.second+dy[i]; if (now.first==gx && now.second==gy) break; if (0<=tempx && tempx <=4 && 0<= tempy && tempy<=4 && maze[tempx][tempy]!='#' && d[tempx][tempy]==INF) { d[tempx][tempy]=d[now.first][now.second]+1; que.push(P(tempx,tempy)); } } } return d[gx][gy]; }
1 0
- 035_迷宫最短路径
- 数据结构_队列_迷宫的最短路径
- 迷宫最短路径
- 迷宫最短路径
- 迷宫最短路径
- 迷宫-最短路径
- 迷宫最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 广搜走迷宫最短路径
- 迷宫的最短路径
- 迷宫最短路径问题
- Sicily. 迷宫最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫最短路径 练习
- UIGestureRecognizer,手势处理,点击,长按,拖动,左右划动
- linux 常用命令
- Hbase原理、基本概念、基本架构
- Service绑定模式
- 第一次总结(安卓学习)
- 035_迷宫最短路径
- Matlab视频处理
- 哈萨克Oracle数据库嵌套视图调优记录20151226
- hdij1050Moving Tables
- android的Intent中startActivityForResult来回传数据
- 读书笔记--python数据可视化--004_读取JSON数据
- 使用DOM4J解析 XML文件
- Java Socket(五) 服务器响应客户端
- 完整的简单例子: --创建函数