En aquest problema haureu de calcular la probabilitat de guanyar al
joc de l’OSO, en una versió simplificada. Suposeu un tauler
,
inicialment buit, on per torns s’hi ha de posar una ‘S’ o
una ‘O’ a qualsevol casella lliure. Guanya el primer que
aconsegueix escriure “OSO” horitzontalment o verticalment
(no diagonalment). Si el tauler s’omple sense que ningú aconsegueixi fer
un “OSO”, la partida acaba en empat.
Donat un tauler amb una posició actual del joc, on encara no hi ha
cap “OSO”, calculeu la probabilitat que la partida la
guanyi el jugador a qui li toca jugar ara, acabi en empat, o la guanyi
l’altre jugador. Suposeu que es juga totalment a l’atzar, tant a l’hora
d’escollir una casella com decidint si s’hi posa una ‘S’ o
una ‘O’.
L’entrada comença amb el nombre de taulers , seguit de taulers.
Per a cada tauler, escriviu les tres probabilitats demanades amb quatre dígits decimals. Per fer-ho, poseu aquestes dues línies al principi del vostre main:
cout.setf(ios::fixed);
cout.precision(4);
Per assegurar que el vostre programa no escrigui mai
-0.0000, sumeu 1e-8 a cada real abans
d’escriure’l. A part d’això, els jocs de proves no tenen problemes de
precisió.
Input
3 .SO SSS OSS SSO OS. SS. ... ... ...
Output
0.5000 0.5000 0.0000 0.2500 0.2500 0.5000 0.2962 0.4688 0.2351