Haced un programa que calcule el número de caminos diferentes que permiten escapar de un laberinto dado, yendo desde la casilla inferior derecha hasta la casilla superior izquierda. Todos los movimientos deben ser hacia arriba o hacia la izquierda. Hay casillas prohibidas por las que no se puede pasar. Siempre hay por lo menos un camino desde la entrada hasta la salida.
La entrada consiste en diversos casos de prueba. Cada caso comienza
con el número de filas
y el número de columnas
,
seguidos de
líneas con
caracteres cada una. Una ‘X’ indica una casilla prohibida,
y un punto indica una casilla permitida. Un caso especial con
marca el final de la entrada. Podéis asumir
y
.
Para cada caso, escribid el número de caminos diferentes que van
desde la esquina inferior derecha hasta la esquina superior izquierda, y
con todos los movimientos hacia arriba o hacia la izquierda. Si ese
número fuese mayor o igual que
,
en su lugar hay que escribir “!!!”.
El hecho que alguna casilla tenga demasiados caminos desde la entrada (o hacia la salida) no implica con certeza que haya demasiados caminos desde la entrada hasta la salida.
Input
2 2 .. .. 3 8 .......X .X.X.X.. X....... 7 38 ...................................... ...................................... ...................................... ...................................... ...................................... ...................................... ...................................... 2 40 ........................................ ......................................X. 2 40 .X...................................... ........................................ 0 0
Output
2 4 !!! 1 1