BFS廣度優先搜尋(11)--hdu2102(基礎題)
這道題就是簡單BFS,題目雖說是在T時刻解救公主,但其實只要求出解救公主的最短時間並且小於T時刻就可以了,因為題並沒有說走過的邊不能夠往回走,所以時間變成了小於等於T(因為這個坑wa了一發)。程式碼:
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
char map[2][12][12];
int vis[2][12][12]; //標記
int N,M,T;
int d[4][2]={0,1,1,0,-1,0,0,-1}; //上下左右四個方向
struct node {
int x,y,z;
int step;
};
bool Bfs(int x,int y,int z){
int i;
memset(vis,0,sizeof(vis));
vis[x][y][z]=1;
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]=='P') //解救了公主
return true;
if(s.step>=T)return false; //如果時間已超過T 則不能在規定時間解救公主
for(i=0;i<4;i++){
int xx=s.x;
int yy=s.y+d[i][0];
int zz=s.z+d[i][1];
if(zz<0||yy<0||yy>=N||zz>=M)continue;
if(map[xx][yy][zz]=='*')continue;
if(vis[xx][yy][zz])continue;
vis[xx][yy][zz]=1;
if(map[xx][yy][zz]=='#'){ //時空傳輸機
xx=!xx;
if(map[xx][yy][zz]=='*'||map[xx][yy][zz]=='#' //不允許是*和#,*會撞死,#會無限迴圈
||vis[xx][yy][zz]==1)continue;
vis[xx][yy][zz]=1;
}
e.x=xx;
e.y=yy;
e.z=zz;
e.step=s.step+1;
q.push(e);
}
}
return false; //不能解救公主
}
int main()
{
int C,i,j;
scanf("%d",&C);
while(C--){
scanf("%d %d %d",&N,&M,&T);
for(i=0;i<2;i++)
{
for(j=0;j<N;j++){
scanf("%s",map[i][j]);
}
}
if(Bfs(0,0,0))printf("YES\n");
else printf("NO\n");
}
return 0;
}
相關文章
- BFS廣度優先搜尋(10)--fzu2150(基礎題)
- BFS廣度優先搜尋(6)--poj3414(基礎題)
- BFS廣度優先搜尋(4)--hdu2717(poj3278)(基礎題)
- 【演算法】廣度/寬度優先搜尋(BFS)演算法
- BFS廣度優先搜尋(3)--poj2251(zoj1940)(基礎題)
- 基本演算法——深度優先搜尋(DFS)和廣度優先搜尋(BFS)演算法
- 演算法競賽——BFS廣度優先搜尋演算法
- 廣度優先搜尋(BFS)思路及演算法分析演算法
- BFS-圖的廣度優先搜尋--鄰接矩陣矩陣
- 0演算法基礎學演算法 搜尋篇第二講 BFS廣度優先搜尋的思想演算法
- BFS廣度優先搜尋(5)(亦可以用DFS)--hdu1241(poj1562)(基礎題)
- c++ 廣度優先搜尋(寬搜)C++
- 廣度優先搜尋,分支限界- ZOJ - 1136 Multiple
- 佇列,廣度搜尋-ZOJ 1148 The Game (BFS)佇列GAM
- python 二叉樹深度優先搜尋和廣度優先搜尋Python二叉樹
- 圖的廣度優先搜尋和深度優先搜尋Python實現Python
- js版本的(廣、深)度優先搜尋JS
- 演算法筆記(廣度優先搜尋)演算法筆記
- 深度和廣度優先搜尋演算法演算法
- 【程式碼隨想錄】廣度優先搜尋
- 「Golang成長之路」迷宮的廣度優先搜尋Golang
- golang學習筆記——迷宮的廣度優先搜尋Golang筆記
- 《圖論》——廣度優先遍歷演算法(BFS)圖論演算法
- 深度DFS 和 廣度BFS搜尋演算法學習演算法
- 啟發式搜尋的方式(深度優先,廣度優先)和 搜尋方法(Dijkstra‘s演算法,代價一致搜尋,貪心搜尋 ,A星搜尋)演算法
- 演算法(三):圖解廣度優先搜尋演算法演算法圖解
- Swift 演算法實戰之路:深度和廣度優先搜尋Swift演算法
- (BFS廣度優先演算法) 油田問題演算法
- 0基礎學演算法 搜尋篇第一講 深度優先搜尋演算法
- 廣度優先搜尋相關面試演算法總結(非圖論方面)面試演算法圖論
- python實現圖(基於圖的不同儲存方式)的深度優先(DFS)和廣度(BFS)優先遍歷Python
- DFS深度優先搜尋(3)--hdu2181(哈密頓繞行世界問題)(基礎題)
- Python 圖_系列之基於鄰接炬陣實現廣度、深度優先路徑搜尋演算法Python演算法
- leetcode 刷題之深度優先搜尋LeetCode
- Android程式設計師面試會遇到的演算法(part 2 廣度優先搜尋)Android程式設計師面試演算法
- 廣度優先遍歷圖解圖解
- 工作安排(dfs深度優先搜尋)
- 演算法~廣度優先搜尋(Breadth First Search)一石激起幹層浪(附帶6道練習題)演算法