2014-12-13迷宫的最短路径
来源:互联网 发布:excel表格怎样筛选数据 编辑:程序博客网 时间:2024/05/15 13:18
#include <iostream>
#include <queue>
#include <string>
using namespace std;
int b1,b2,e1,e2,m,n;
int a[101][101]={0},flag[101][101]={0};
struct T{
int x,y,n;
};
queue <T> Q;
bool check(int x,int y)
{
if( !flag[x][y] && a[x][y] == 1)
if(x >= 0 && x < n && y >= 0 && y < m )
return true;
return false;
}
int BFS()
{
int i,ord[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
T head,temp;
head.x=b1;
head.y=b2;
head.n=0;
Q.push(head);
while(!Q.empty())
{
head=Q.front(); //逐层检测,每次从头部第一个检测,即最上层余下的第一个
Q.pop(); //队列从头部(front)出队,将每一层的每一种情况遍历
for(i=0;i<4;i++)
{
temp.x=head.x+ord[i][0];
temp.y=head.y+ord[i][1];
if(check(temp.x,temp.y))
{
temp.n=head.n+1;
flag[temp.x][temp.y]=1;
Q.push(temp); //逐层入队
if( temp.x == e1 && temp.y == e2 )
return temp.n;
}
}
}
return 0;
}
int main()
{
int i,j;
string str;
cin>>n>>m;
for(i=0;i<n;i++)
{
cin>>str;
for(j=0;j<m;j++)
{
if(str[j]=='#') a[i][j]=0;
else if(str[j]=='.') a[i][j]=1;
else if(str[j]=='S') {b1=i;b2=j;a[i][j]=0;}
else if(str[j]=='G') {e1=i;e2=j;a[i][j]=1;}
}
}
cout<<BFS();
return 0;
}
- 2014-12-13迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫的最短路径
- 迷宫最短路径
- 迷宫最短路径
- 迷宫最短路径
- 迷宫-最短路径
- 迷宫最短路径
- BFS 迷宫的最短路径问题
- BFS:迷宫的最短路径
- BFS求迷宫的最短路径
- 属性表
- JAVA学习——纯注解搭建SSH框架 一
- linux之SQL语句简明教程---BETWEEN
- hdu4539郑厂长系列故事——排兵布阵 dp+状态压缩
- 使用c99编译出警告信息:implicit declaration of function ‘usleep’
- 2014-12-13迷宫的最短路径
- IOS动态字母键盘
- 循环移动
- 基金上周调研21家公司 最爱看电子元件企业
- 单例设计模式总结
- 在 linux 下使用 CMake 构建应用程序
- mysql 安装完成后登陆不了mysql的 shell 即mysql>遇到:ERROR 1045 (28000): Access denied for user 'root'@'localhost‘
- OpenStack之路: OpenStack架构设计指南 - 概述(摘录并翻译)
- [LeetCode] Best Time to Buy and Sell Stock