首页 > 代码库 > 逃离迷宫HDU - 1728
逃离迷宫HDU - 1728
逃离迷宫HDU - 1728
主要是要记录转弯的次数。
1 #include <iostream> 2 #include <stdio.h> 3 #define ll long long 4 using namespace std; 5 int n,m,gx,gy,p[110][110],k; 6 int dx[] = {1,0,-1,0},dy[] = {0,-1,0,1}; 7 char str[110][110]; 8 bool flag; 9 10 void dfs (int x, int y, int dir) { 11 if (x == gx && y == gy) { 12 if (p[x][y] <= k) 13 flag = true; 14 return ; 15 } 16 if ((x !=gx && y != gy && p[x][y] == k)||p[x][y]>k) 17 return ; 18 for (int i = 0; i < 4; i++) { 19 int tx = x + dx[i]; 20 int ty = y + dy[i]; 21 if (tx < 0 || tx >= m|| ty < 0 || ty >= n) 22 continue; 23 if (str[tx][ty] == ‘*‘ || p[tx][ty] < p[x][y]) 24 continue; 25 if (dir != -1 && i != dir && p[tx][ty] == p[x][y] ) 26 continue; 27 if (dir != -1 && i != dir) 28 p[tx][ty]=p[x][y]+1; 29 else p[tx][ty] = p[x][y]; 30 dfs (tx, ty, i); 31 if (flag) return ; 32 } 33 } 34 35 int main(){ 36 int t,qx,qy; 37 scanf("%d",&t); 38 while(t--){ 39 scanf("%d%d",&m,&n); 40 for(int i = 0; i < m; i ++) 41 scanf("%s",str[i]); 42 scanf("%d%d%d%d%d",&k,&qy,&qx,&gy,&gx); 43 qx--;qy--;gx--;gy--; 44 for(int i = 0; i < 110; i ++) 45 for(int j = 0; j < 110; j ++) 46 p[i][j] = 100000; 47 p[qx][qy] = 0; 48 flag = false; 49 dfs(qx,qy,-1); 50 if(flag)puts("yes"); 51 else puts("no"); 52 } 53 return 0; 54 }
逃离迷宫HDU - 1728
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。