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廣度優先搜尋
- 【演算法】廣度/寬度優先搜尋(BFS)演算法
- 基本演算法——深度優先搜尋(DFS)和廣度優先搜尋(BFS)演算法
- 演算法競賽——BFS廣度優先搜尋演算法
- 廣度優先搜尋(BFS)思路及演算法分析演算法
- 0演算法基礎學演算法 搜尋篇第二講 BFS廣度優先搜尋的思想演算法
- ybtoj:廣度優先搜尋
- 圖的遍歷:深度優先搜尋與廣度優先搜尋
- c++ 廣度優先搜尋(寬搜)C++
- 圖的廣度優先搜尋和深度優先搜尋Python實現Python
- python 二叉樹深度優先搜尋和廣度優先搜尋Python二叉樹
- js版本的(廣、深)度優先搜尋JS
- 【程式碼隨想錄】廣度優先搜尋
- 演算法筆記(廣度優先搜尋)演算法筆記
- 深度和廣度優先搜尋演算法演算法
- 「Golang成長之路」迷宮的廣度優先搜尋Golang
- 啟發式搜尋的方式(深度優先,廣度優先)和 搜尋方法(Dijkstra‘s演算法,代價一致搜尋,貪心搜尋 ,A星搜尋)演算法
- golang學習筆記——迷宮的廣度優先搜尋Golang筆記
- 深度DFS 和 廣度BFS搜尋演算法學習演算法
- 演算法(三):圖解廣度優先搜尋演算法演算法圖解
- 0基礎學演算法 搜尋篇第一講 深度優先搜尋演算法
- 深度優先搜尋
- leetcode 刷題之深度優先搜尋LeetCode
- (BFS廣度優先演算法) 油田問題演算法
- POJ1915,雙向寬度優先搜尋
- python實現圖(基於圖的不同儲存方式)的深度優先(DFS)和廣度(BFS)優先遍歷Python
- ybtoj:深度優先搜尋
- DFS(深度優先搜尋)
- 十、深度優先 && 廣度優先
- 深度優先與廣度優先
- 單詞接龍---快速建圖----雙向BFS(廣度優先遍歷)
- 廣度優先搜尋相關面試演算法總結(非圖論方面)面試演算法圖論
- Python 圖_系列之基於鄰接炬陣實現廣度、深度優先路徑搜尋演算法Python演算法
- Android程式設計師面試會遇到的演算法(part 2 廣度優先搜尋)Android程式設計師面試演算法
- 演算法~廣度優先搜尋(Breadth First Search)一石激起幹層浪(附帶6道練習題)演算法
- 【演算法】深度優先搜尋(DFS)演算法
- 廣度優先與深度優先類似嗎? - Mario
- 廣度優先遍歷圖解圖解
- dfs深度優先搜尋解決迷宮類問題(遍歷)