bfs hdu 1728 逃离迷宫
来源:互联网 发布:mac命令行date修改时间 编辑:程序博客网 时间:2024/05/21 13:32
http://acm.hdu.edu.cn/showproblem.php?pid=1728
#include <iostream>#include<cstdio>#include<queue>#include<cstring>using namespace std;/*刚开始就DFS,果断TLE了,不会剪枝,其实也不知道怎样BFS,百度了一下,我擦,恍然大悟,一条道走到黑呗,注意vis[][]的更新*/const int N=100;int m,n,vis[N][N];char maze[N][N];int x1,x2,y1,y2,d;int next[4][2]={0,1,1,0,-1,0,0,-1};int ok(int x,int y){ if(x<0||x>=m||y<0||y>=n||maze[x][y]=='*') return 0; return 1;}struct node{ int x,y;};bool bfs(int x,int y){ if(x==x2&&y==y2) return 1; int uk; node p,pp; p.x=x; p.y=y; queue<node> que; que.push(p); while(!que.empty()) { p=que.front(); que.pop(); uk=vis[p.x][p.y]; for(int i=0;i<4;++i) { pp.x=p.x+next[i][0]; pp.y=p.y+next[i][1]; while(ok(pp.x,pp.y))//朝一个方向一直走下去 { if(vis[pp.x][pp.y]==-1)//更新vis[][]数组 { vis[pp.x][pp.y]=uk+1; if(pp.x==x2&&pp.y==y2&&uk<=d) return 1; que.push(pp); } pp.x+=next[i][0]; pp.y+=next[i][1]; } } } return 0;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); int i,j; memset(vis,0,sizeof(vis)); for(i=0;i<m;++i) { scanf("%s",maze[i]); for(j=0;j<n;++j) vis[i][j]=-1; } scanf("%d%d%d%d%d",&d,&y1,&x1,&y2,&x2); x1--; y1--; x2--; y2--; vis[x1][y1]=0; printf(bfs(x1,y1)?"yes\n":"no\n"); } return 0;}
- bfs hdu 1728 逃离迷宫
- hdu 1728 逃离迷宫 (BFS)
- hdu 1728 逃离迷宫 BFS
- HDU 1728 逃离迷宫 BFS
- HDU-1728-逃离迷宫(BFS)
- HDU 1728 逃离迷宫 BFS
- HDU 1728 逃离迷宫(BFS)
- hdu 1728 逃离迷宫(bfs)
- HDU 1728 逃离迷宫【bfs】
- HDU 1728 逃离迷宫【BFS】
- HDU 1728 逃离迷宫(BFS)
- hdu 1728 逃离迷宫(BFS)
- HDU 1728 逃离迷宫【BFS】
- 逃离迷宫 1728hdu bfs + dp
- HDU 1728 逃离迷宫(BFS)
- hdu 1728 逃离迷宫(BFS)
- HDU 1728 逃离迷宫 转向限制BFS
- HDU 1728逃离迷宫(DFS或者BFS)
- Android-编写兼容android1.6的fragment
- Fragment对比Activity - Android碎片介绍
- Android Fragment使用详解
- asterisk使用之AEL
- 谁是"第一"?
- bfs hdu 1728 逃离迷宫
- 10个步骤让你成为高效的Web开发者
- 我看KDE与GNOME
- Android 源码分析 -- Binder机制
- linux软件安装使用备忘
- 文件同步PHP版,同步服务器之间的文件
- poj3463
- matlab的几个图像处理函数
- 如何计算时间复杂度