Un día, la cabeza de ajo cayó en un laberinto. La cabeza de ajo quería escapar. La cabeza de ajo pobre ni siquiera sabía si el laberinto podía escapar.
Para una parte tan lamentable de la cabeza de ajo, sea inteligente, dígale a la cabeza de ajo si hay una salida.
Formato de entrada
Ingrese dos enteros n y m en la primera línea , lo que indica que este es un laberinto de n × m.
La siguiente entrada es un laberinto con n filas ym columnas. Entre ellos 'S'
, la posición de la cabeza de ajo Jun, la '*'
pared, la cabeza de ajo Jun no puede pasar, el '.'
camino, la cabeza de ajo Jun puede '.'
moverse y 'T'
la salida del laberinto (la cabeza de ajo Jun solo puede moverse a cuatro posiciones adyacentes arriba y abajo , Izquierda, derecha).
Formato de salida
Salida de una cadena, si la cabeza de ajo puede escapar de la salida del laberinto "yes"
, de lo contrario salida "no"
.
Rango de datos
1 ≤ n , m ≤ 1 0。
Entrada de muestra
3 4 S **. .. *. *** T
Salida de muestra
No
Entrada de muestra
3 4 S **. .... *** T
Salida de muestra
si
1 #include <iostream> 2 usando el espacio de nombres estándar; 3 int n, m, beginx, beginy; 4 bool mark [ 11 ] [ 11 ] = { false }; 5 Char mapa [ 11 ] [ 11 ]; 6 int x [ 4 ] = { 0 , - 1 , 1 , 0 }, y [ 4 ] = {- 1 , 0 , 0 , 1 }; 7 bandera de bool = falso; 8 bool check ( int r, int c) { 9 if (r> = 0 && r <n && c> = 0 && c < m) 10 return true ; 11 devuelve falso ; 12 } 13 nulo DFS ( int r, int c) { 14 15 int newx, newy; 16 para ( int i = 0 ; i < 4 ; i ++ ) 17 { 18 newx = r + x [i]; 19 newy = c + y [i]; 20 if (marque (newx, newy) &&! Mark [newx] [newy]) 21 { 22 mark [newx] [newy] = verdadero ; 23 if (map [newx] [newy] == ' T ' ) 24 { 25 flag = true ; 26 cout << " sí " << endl; 27 regreso ; 28 } 29 si(map [newx] [newy] == ' . ' ) 30 { 31 mark [newx] [newy] = verdadero ; 32 DFS (newx, newy); 33 // cout << "newx =" << newx << "newy =" << newy << endl; 34 } 35 } 36 } 37 } 38 int main () { 39 cin >> n >> m; 40 para ( int i = 0 ; i <n; i ++ ) 41 { 42 cin>mapa [i]; 43 para ( int j = 0 ; j <m; j ++ ) 44 { 45 if (mapa [i] [j] == ' S ' ) 46 { 47 beginx = i; 48 beginy = j; 49 } 50 } 51 } 52 puntos [beginx] [beginy]; 53 DFS (beginx, beginy); 54 if (! Flag) 55 { 56 cout <<" no " << endl; 57 } 58 59 }