BFS廣度優先搜尋(3)--poj2251(zoj1940)(基礎題)
這道題題意:一個三維的地牢,給你起點和終點,問從起點到終點至少需要多長時間,每移動一次耗時1minute;如果不能到達終點,輸出“Trapped!“。因為是三維的,所以從 每個點開始搜尋時都會有6個方向,設定6個方向向量,然後每搜到一個點就判斷是不是終點。一個簡單的BFS。 下面是我的AC程式碼:
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
char map[30][30][30];
int vis[30][30][30];
int L,R,C;
int d[6][3]={{0,0,1},{0,0,-1},{0,1,0},{0,-1,0},{1,0,0},{-1,0,0}}; //6個方向
struct node {
int x,y,z;
int step;
};
int Bfs(int x,int y,int z){
int i,j;
memset(vis,0,sizeof(vis));
queue<node>q;
node s,e;
s.x=x;
s.y=y;
s.z=z;
s.step=0;
q.push(s);
while(!q.empty()){
s=q.front();
q.pop();
if(map[s.x][s.y][s.z]=='E')return s.step;
for(i=0;i<6;i++){
int xx=s.x+d[i][0];
int yy=s.y+d[i][1];
int zz=s.z+d[i][2];
if(xx<0||yy<0||zz<0||xx>=L||yy>=R||zz>=C)
continue;
if(map[xx][yy][zz]=='#')continue;
if(vis[xx][yy][zz])continue;
vis[xx][yy][zz]=1;
e.x=xx;
e.y=yy;
e.z=zz;
e.step=s.step+1;
q.push(e);
}
}
return -1; //不能到達終點返回-1
}
int main()
{
int i,j,k;
while(~scanf("%d %d %d",&L,&R,&C)){
if(!L&&!R&&!C)break;
for(i=0;i<L;i++){
for(j=0;j<R;j++){
scanf("%s",map[i][j]);
}
}
int ans=0;
for(i=0;i<L;i++){
for(j=0;j<R;j++){
for(k=0;k<C;k++){
if(map[i][j][k]=='S')
{
ans=Bfs(i,j,k);
}
}
}
}
if(ans==-1)printf("Trapped!\n");
else printf("Escaped in %d minute(s).\n",ans);
}
return 0;
}
相關文章
- BFS廣度優先搜尋(10)--fzu2150(基礎題)
- BFS廣度優先搜尋(6)--poj3414(基礎題)
- BFS廣度優先搜尋(11)--hdu2102(基礎題)
- BFS廣度優先搜尋(4)--hdu2717(poj3278)(基礎題)
- 【演算法】廣度/寬度優先搜尋(BFS)演算法
- 基本演算法——深度優先搜尋(DFS)和廣度優先搜尋(BFS)演算法
- 演算法競賽——BFS廣度優先搜尋演算法
- 廣度優先搜尋(BFS)思路及演算法分析演算法
- BFS-圖的廣度優先搜尋--鄰接矩陣矩陣
- 0演算法基礎學演算法 搜尋篇第二講 BFS廣度優先搜尋的思想演算法
- BFS廣度優先搜尋(5)(亦可以用DFS)--hdu1241(poj1562)(基礎題)
- c++ 廣度優先搜尋(寬搜)C++
- python 二叉樹深度優先搜尋和廣度優先搜尋Python二叉樹
- 圖的廣度優先搜尋和深度優先搜尋Python實現Python
- js版本的(廣、深)度優先搜尋JS
- 演算法筆記(廣度優先搜尋)演算法筆記
- 深度和廣度優先搜尋演算法演算法
- 【程式碼隨想錄】廣度優先搜尋
- 廣度優先搜尋,分支限界- ZOJ - 1136 Multiple
- 「Golang成長之路」迷宮的廣度優先搜尋Golang
- 佇列,廣度搜尋-ZOJ 1148 The Game (BFS)佇列GAM
- golang學習筆記——迷宮的廣度優先搜尋Golang筆記
- 《圖論》——廣度優先遍歷演算法(BFS)圖論演算法
- 深度DFS 和 廣度BFS搜尋演算法學習演算法
- 啟發式搜尋的方式(深度優先,廣度優先)和 搜尋方法(Dijkstra‘s演算法,代價一致搜尋,貪心搜尋 ,A星搜尋)演算法
- 演算法(三):圖解廣度優先搜尋演算法演算法圖解
- Swift 演算法實戰之路:深度和廣度優先搜尋Swift演算法
- DFS深度優先搜尋(3)--hdu2181(哈密頓繞行世界問題)(基礎題)
- (BFS廣度優先演算法) 油田問題演算法
- 0基礎學演算法 搜尋篇第一講 深度優先搜尋演算法
- 廣度優先搜尋相關面試演算法總結(非圖論方面)面試演算法圖論
- python實現圖(基於圖的不同儲存方式)的深度優先(DFS)和廣度(BFS)優先遍歷Python
- Python 圖_系列之基於鄰接炬陣實現廣度、深度優先路徑搜尋演算法Python演算法
- leetcode 刷題之深度優先搜尋LeetCode
- Android程式設計師面試會遇到的演算法(part 2 廣度優先搜尋)Android程式設計師面試演算法
- 廣度優先遍歷圖解圖解
- 工作安排(dfs深度優先搜尋)
- Solr搜尋基礎Solr