La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 El Problema de las Vacas Cesar Liza Avila. César Liza Avila2 Enunciado Se tienen 2 vacas que deben alimentarse. Se coloca bloques de pasto en fila para.

Presentaciones similares


Presentación del tema: "1 El Problema de las Vacas Cesar Liza Avila. César Liza Avila2 Enunciado Se tienen 2 vacas que deben alimentarse. Se coloca bloques de pasto en fila para."— Transcripción de la presentación:

1 1 El Problema de las Vacas Cesar Liza Avila

2 César Liza Avila2 Enunciado Se tienen 2 vacas que deben alimentarse. Se coloca bloques de pasto en fila para alimentarlas. Las vacas solo pueden comer el pasto que se encuentra en uno de sus extremos La primera de ellas, una vaca inteligente desea aplicar una estrategia que le permita comer mas pasto. La segunda come el bloque de pasto mas grande que se encuentra en uno de los extremos. Implemente la estrategia de la 1ra vaca....

3 César Liza Avila3 Sea Tabla(i, j) la cantidad de pasto que puede comer la vaca 1 cuando empieza a comer con bloques entre i hasta j. i, i+1, i+2,. …..…, j-2, j-1, j La vaca 1, tiene dos alternativas 1) Come pi y luego come lo que pueda comer entre lo que queda Pero que le queda? Pues si pi+1>pj, la vaca 2 come pi+1, dejando i, i+1, i+2,. ….. ……, j-2, j-1, j tabla(i,j) = pi + tabla(i+2, j) Pero si pi+1

4 César Liza Avila4 2) Come pj y luego come lo que pueda comer entre lo que queda Pero que le queda? Pues si pi>pj-1, la vaca 2 come pi, dejando i, i+1, i+2,. ….. ……, j-2, j-1 j tabla(i,j) = pj + tabla(i+1, j-1) Pero si pi

5 César Liza Avila5 Condición Base: Si n=2 bloques tabla(i, i+1) = max(p i, p i+1 ) Si pi>pj-1 pj + tabla(i+1, j-1) Si pi>pj-1 pj + tabla(i, j-2) Si pi+1>pj pi + tabla(i+2, j) Si pi+1

6 César Liza Avila6 # include #defineMAX 100 #definemax(a,b) ((a)>(b))?(a):(b) int vacas(int P[], int n); void llenaTabla(int n, int tabla[][MAX]); void impTabla(int tabla[][MAX], int n); void main(void) { int P[ ]={2, 2, 1, 5, 3, 8, 7, 3} ; cout<<"Si la 1ra vaca es inteligente come: <

7 César Liza Avila7 int vacas(int P[ ], int n) { int i; int pi, pj; int tabla[MAX][MAX]; llenaTabla(n, tabla); // no es necesario for(i = 0;i< n-1; i++) tabla[i][i+1]= max (P[i], P[i+1]); for(int d=3; d P[i+1]) pi = tabla[i+1][j-1]; else pi = tabla[i+2][j]; if (P[i]< P[j+1]) pj = tabla[i][j-2]; else pj = tabla[i+1][j-1]; tabla[i][j] = max (P[i] + pi, P[j] + pj); } impTabla(tabla, n); // no es necesario return tabla[0][n-1]; }

8 César Liza Avila8 Vaca 1: = 18 Vaca 2: = 13

9 César Liza Avila9 PD: Este problema es similar 3379-Two Ends. archive.uva.es/nuevoportal/ archive.uva.es/nuevoportal/ Los movimientos de la vaca que usa la estratagia de tomar el mayor de los extremos debe ser llenado en las diagonales que estan vacias.


Descargar ppt "1 El Problema de las Vacas Cesar Liza Avila. César Liza Avila2 Enunciado Se tienen 2 vacas que deben alimentarse. Se coloca bloques de pasto en fila para."

Presentaciones similares


Anuncios Google