14.01.2013 Views

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

Soluciones y Explicación de los problemas ACM ... - ICPC Bolivia

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Explicaciones a <strong>los</strong> <strong>problemas</strong> South American Regionals 2008 24<br />

⎛<br />

⎜<br />

Dij = ⎜<br />

⎝<br />

Buscamos la solución para cada fila.<br />

0 0 1 8 2 1 9<br />

0 0 1 7 3 5 2<br />

0 0 1 2 10 3 10<br />

0 0 8 4 7 9 1<br />

0 0 7 1 3 1 6<br />

for (int i = 0; i < M; i++) {<br />

for (int j = 2; j < N+2; j++) {<br />

D[i][j] = max(D[i][j-1], D[i][j]+D[i][j-2]);<br />

}<br />

}<br />

⎛<br />

⎜<br />

Dij = ⎜<br />

⎝<br />

0 0 1 8 8 9 17<br />

0 0 1 7 7 12 12<br />

0 0 1 2 11 11 21<br />

0 0 8 8 15 17 17<br />

0 0 7 7 10 10 16<br />

Una vez tengamos el valor máximo <strong>de</strong> cada fila, <strong>de</strong>bemos realizar la misma tarea con esos<br />

valores, para ésto guardamos las soluciones en un vector sol[] <strong>de</strong> tamaño igual al número <strong>de</strong><br />

filas más dos vacías.<br />

solij = �<br />

⎞<br />

⎟<br />

⎠<br />

⎞<br />

⎟<br />

⎠<br />

0 0 17 12 21 17 16 �<br />

int[] sol = new int[M+2];<br />

for (int i = 0; i < M; i++) {/guardamos las soluciones <strong>de</strong> cada fila<br />

sol[i+2] = D[i][N+1];<br />

}<br />

for (int i = 2; i < M+2; i++) {//<br />

sol[i] = max(sol[i-1], sol[i]+sol[i-2]);<br />

}<br />

solij = �<br />

0 0 17 17 38 38 54 �<br />

La respuesta <strong>de</strong>l problema se encuentra en el último valor calculado en sol[M+1] = 54.<br />

Si realizamos <strong>los</strong> mismos cálcu<strong>los</strong> el momento <strong>de</strong> leer po<strong>de</strong>mos crear una version mucho mas<br />

simple. Esta version se presenta codificada en lenguaje c.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!