Hi ha un objecte a la part superior esquerra d’un tauler n × m. Repetidament, l’objecte es mourà una casella a la dreta o una casella cap avall. Tanmateix, el tauler té obstacles que fan que l’objecte s’aturi. També, hi ha caselles on l’objecte es mourà sempre cap a la dreta, i caselles on l’objecte es mourà sempre cap avall. Finalment, a la resta de caselles, l’objecte es mourà amb probabilitat p una casella a la dreta, i amb probabilitat 1 − p una casella cap avall.
Podeu calcular la probabilitat que l’objecte surti del tauler?
Entrada
L’entrada consisteix en diversos casos. Cada cas comença amb p, n i m, seguides d’n files amb m caràcters cadascuna. Els punts indiquen caselles buides, les ‘D’ caselles que fan anar cap a la dreta, les ‘A’ caselles que fan anar cap avall, i les ‘X’ obstacles. Suposeu 0 < p < 1, i que n i m estan entre 1 i 1000.
Sortida
Per a cada cas, escriviu la probabilitat demanada amb quatre xifres decimals. Per fer-ho, poseu aquestes dues línies al principi del vostre main:
cout.setf(ios::fixed); cout.precision(4);
Els jocs de proves no tenen problemes de precisió. El resultat no serà mai ni 0 ni 1.
Input
0.7 3 4 .X.. .X.. .... 0.2 4 5 ..A.. X.... .DX.. ..... 0.5 2 3 DAX X.X
Output
0.0900 0.0144 0.5000