HDU ACM 1728 逃离迷宫 (广搜BFS)
2012-08-27 20:39
169 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1728
题意:给出一张图,转弯数k,起点(x1,y1),(x2,y2)判断能不能最多只转k个弯时从起点走到终点
输入时注意起点与终点是先y后x的
思路:用point[4][2]表示方向向量,每次遍历遍历一行或者一列,遍历时要注意遇到遍历过的点要跳过去,继续遍历他后面的点而不是直接结束.
由于每次遍历一行所以并不需要记录初始方向.
记录转弯次数则在每一取队头时,把转弯数+1.
还是不懂得化去看看KIDx大牛的/article/4494909.html
View Code
题意:给出一张图,转弯数k,起点(x1,y1),(x2,y2)判断能不能最多只转k个弯时从起点走到终点
输入时注意起点与终点是先y后x的
思路:用point[4][2]表示方向向量,每次遍历遍历一行或者一列,遍历时要注意遇到遍历过的点要跳过去,继续遍历他后面的点而不是直接结束.
由于每次遍历一行所以并不需要记录初始方向.
记录转弯次数则在每一取队头时,把转弯数+1.
还是不懂得化去看看KIDx大牛的/article/4494909.html
View Code
#include<iostream> #include <queue> using namespace std; const int MAX = 100 + 10; const int INF = 0x3fffffff; char map[MAX][MAX]; int used[MAX][MAX]; int point[4][2]={{0,1},{1,0},{0,-1},{-1,0}};// struct Node { int x; int y; int turn; }; int x,y; int BFS(Node a,Node b) { memset(used,0,sizeof(used)); queue <Node> q; a.turn = -1; q.push(a); used[a.x][a.y] = 1; while(!q.empty()) { Node mid; mid = q.front(); q.pop(); if(mid.x == b.x && mid.y == b.y) { b.turn = mid.turn; } int i; mid.turn++; for(i=0;i<4;i++) { a.x = mid.x + point[i][0]; a.y = mid.y + point[i][1]; a.turn = mid.turn; while(1) { if(map[a.x][a.y]!='*' && a.x>0 && a.y>0 && a.x<=x && a.y<=y) { if( used[a.x][a.y] == 1 ) { a.x = a.x + point[i][0]; a.y = a.y + point[i][1]; } else { q.push(a); used[a.x][a.y] = 1; a.x = a.x + point[i][0]; a.y = a.y + point[i][1]; } } else { break; } } } } return b.turn; } int main() { int T; cin>>T; while(T--) { memset(map,0,sizeof(map)); cin>>x>>y; int i,j; for(i=1;i<=x;i++) { for(j=1;j<=y;j++) { cin>>map[i][j]; } } int k; Node a,b; cin>>k>>a.y>>a.x>>b.y>>b.x; b.turn = INF; if( BFS(a,b) <= k) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } return 0; }
相关文章推荐
- hdu 1728 逃离迷宫(BFS 有 限制条件,陷阱比较多)
- HDU 1728 逃离迷宫 BFS
- HDU 1728 逃离迷宫(bfs)
- hdoj 1728 逃离迷宫 (BFS)
- HDU-1728-逃离迷宫(BFS)
- hdu 1728 逃离迷宫 (bfs)
- HDU 1728 逃离迷宫 BFS
- HDU1728 逃离迷宫 【方向BFS】
- HDOJ 1728 逃离迷宫 (bfs)
- hdu 1728 逃离迷宫 BFS
- 杭电 1728 逃离迷宫(BFS)
- 搜索专题(DFS&&BFS&&剪枝)HDU 1728-逃离迷宫
- hdu_1728_逃离迷宫(bfs)
- 杭电1728逃离迷宫 BFS 搜索
- hdu 1728 逃离迷宫(BFS)
- 杭电 HDU ACM 1728 逃离迷宫
- BFS HDOJ 1728 逃离迷宫
- HDOJ 1728 逃离迷宫(BFS)
- HDU 1728 逃离迷宫(BFS)
- hdu1728 逃离迷宫 bfs