hdu 1728 逃离迷宫
2013-07-17 14:56
337 查看
链接:点击打开链接
思路:一开始我是往左和往右走,不转弯,计数不用加,往上和往下走,就转弯,计数就加一,进行广搜,搜到最后那个点,比较就可以啦,但是华丽丽的WA啦。所以改一条路搜到底,走不了啦,就一定要转弯啦。。。
思路:一开始我是往左和往右走,不转弯,计数不用加,往上和往下走,就转弯,计数就加一,进行广搜,搜到最后那个点,比较就可以啦,但是华丽丽的WA啦。所以改一条路搜到底,走不了啦,就一定要转弯啦。。。
#include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; struct node{ int x; int y; int count; }; int m,n,k,x1,x2,y1,y2; int a[4][2]={-1,0,1,0,0,-1,0,1}; bool vis[110][110]; char str[110][110]; void bfs(){ int i; if(y1==y2&&x1==x2){ printf("yes\n"); return; } queue<node>Q; node p,q; p.x=y1; p.y=x1; p.count=-1; vis[p.x][p.y]=true; Q.push(p); while(!Q.empty()){ p=Q.front(); Q.pop(); for(i=0;i<4;i++){ q=p; q.x=p.x+a[i][0]; q.y=p.y+a[i][1]; while(q.x>0&&q.x<=m&&q.y>0&&q.y<=n&&str[q.x][q.y]=='.'){ if(!vis[q.x][q.y]){ q.count=p.count+1; if(q.x==y2&&q.y==x2&&q.count<=k){ printf("yes\n"); return; } vis[q.x][q.y]=true; Q.push(q); } q.x=q.x+a[i][0]; q.y=q.y+a[i][1]; } } } printf("no\n"); return; } int main(){ int t,i,j; scanf("%d",&t); while(t--){ scanf("%d %d",&m,&n); for(i=1;i<=m;i++){ getchar(); for(j=1;j<=n;j++) scanf("%c",&str[i][j]); } scanf("%d %d %d %d %d",&k,&x1,&y1,&x2,&y2); memset(vis,false,sizeof(vis)); bfs(); } return 0; }
相关文章推荐
- HDU - 1728 逃离迷宫
- hdu 1728 逃离迷宫
- bfs hdu 1728 逃离迷宫
- hdu 1728 逃离迷宫
- hdu 1728 逃离迷宫
- 【百WA然后AC】HDU 1728——逃离迷宫
- HDU 1728 逃离迷宫(BFS+DFS)
- HDU1728 逃离迷宫 【BFS】
- hdu 1728 逃离迷宫(dfs+剪枝)
- HDU 1728 逃离迷宫(BFS)
- HDU 1728逃离迷宫(简单dfs)
- HDU 1728 逃离迷宫 + H 4000 DU 1072 Nightmare
- HDU 1728 逃离迷宫(BFS)
- HDU 1728 逃离迷宫
- hdu 1728 逃离迷宫
- HDU 1728 逃离迷宫 (bfs+一条路走到底思想)
- hdu 1728 逃离迷宫
- HDU 1728 逃离迷宫(DFS经典题,比赛手残写废题)
- HDU1728 逃离迷宫
- HDU-1728 逃离迷宫 解题报告(张浩盛伦)