hdu 1728 逃离迷宫 BFS
来源:互联网 发布:计算复杂性 口头算法 编辑:程序博客网 时间:2024/05/22 04:45
DFS --TLE了,,,DFS的代码:
#include<iostream>#include<cstdio>#include<memory.h>using namespace std;char maze[110][110];int vis[110][110];int dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};int m,n,k,x1,y1,x2,y2,flag,direction;bool IN(int x,int y){ if(1<=x&&x<=m&&1<=y&&y<=n) return true; else return false;}void DFS(int x,int y,int k1){ // printf("%d %d %d\n",x,y,k1); if(x==x2&&y==y2 && k1<=k) { flag=1; //printf("x2==%d y2==%d k1=%d\n",x,y,k1); return ; } if(k1>k) return; int temp=direction; for(int i=0;i<4;i++) { int x0=x+dir[i][0]; int y0=y+dir[i][1]; if(IN(x0,y0) && vis[x0][y0]==0 && maze[x0][y0]=='.') { if(direction==-1) { direction=i; vis[x0][y0]=1; DFS(x0,y0,0); vis[x0][y0]=0; direction=-1; } else if(direction==i) { vis[x0][y0]=1; DFS(x0,y0,k1); vis[x0][y0]=0; } else { direction=i; vis[x0][y0]=1; DFS(x0,y0,k1+1); direction=temp; vis[x0][y0]=0; } } }}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d %d",&m,&n); getchar(); for(int i=1;i<=m;i++) { gets(maze[i]+1); /**gets(maze[i]);*/ } scanf("%d %d %d %d %d",&k,&y1,&x1,&y2,&x2); direction=-1; memset(vis,0,sizeof(vis)); vis[x1][y1]=1; flag=0; DFS(x1,y1,0); if(flag==1) { printf("yes\n"); } else { printf("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)
- OOAD之设计模式-行为模式
- [疯狂Java讲义精粹] 第九章|Annotation(注释)
- sql教程
- How do I trim leading/trailing whitespace in a standard way?
- 【Android】Android图形之Animate
- hdu 1728 逃离迷宫 BFS
- hash_map 与 hash_set 详解
- 从30岁至35岁:为你的生命多积累一些厚度
- jQuery属性过滤选择器
- Bad Hair Day
- 黑马程序员 java中的位运算总结
- 黑马程序员_java银行业务调度系统的分析、设计、实现
- 路
- strcpy源码