Ejercicios resueltos
Ejercicios resueltos Ejercicios resueltos
Solución ejercicio 4. Programación dinámica (cont.) Podemos considerar que las funciones fi(x) se proporcionan como valores de una matriz F [1..n, 0..Cant], donde F [i, j] contiene el importe de los intereses que proporciona el banco i al invertir la cantidad j Como estructura de datos intermedia, utilizamos una matriz I [1..n, 0..Cant] Dada la estructura de la recurrencia, se puede generar la matriz I por filas Yolanda García, Jesús Correas (DSIC - UCM) 18 / 32
Solución ejercicio 4. Programación dinámica (cont.) fun intereses(F[1..n,0..Cant],Cant) crear I[1..n,0..Cant] desde i ← 1 hasta n hacer I[i,0] ← 0 fin desde desde j ← 1 hasta Cant hacer I[1,j] ← F[1,j] fin desde desde i ← 2 hasta n hacer desde j ← 1 hasta Cant hacer I[i,j] ← F[i,j] desde t ← 0 hasta j-1 hacer si I[i,j] < I[i-1,j-t]+F[i,t] entonces I[i,j] ← I[i-1,j-t]+F[i,t] fin si fin desde fin desde fin desde devolver I[n,Cant] fin fun Falta la obtención de los importes invertidos en cada uno de los bancos ¿Cómo podría incluirse en este algoritmo? Yolanda García, Jesús Correas (DSIC - UCM) 19 / 32
- Page 1 and 2: Ejercicio 1. Programación dinámic
- Page 3 and 4: Solución Ejercicio 1. Programació
- Page 5 and 6: Ejercicio 2. Programación dinámic
- Page 7 and 8: Solución ejercicio 2. Programació
- Page 9 and 10: Solución ejercicio 2. Programació
- Page 11 and 12: Solución ejercicio 3. Programació
- Page 13 and 14: Solución ejercicio 3. Programació
- Page 15 and 16: Solución ejercicio 3. Programació
- Page 17: Solución ejercicio 4. Programació
- Page 21 and 22: Solución ejercicio 5. Programació
- Page 23 and 24: Solución ejercicio 5. Programació
- Page 25 and 26: Solución ejercicio 6. Programació
- Page 27 and 28: Ejercicio 7. Programación dinámic
- Page 29 and 30: Solución ejercicio 7. Programació
- Page 31 and 32: Ejercicio 8. Programación dinámic
- Page 33: Solución ejercicio 8. Programació
Solución ejercicio 4. Programación dinámica (cont.)<br />
fun intereses(F[1..n,0..Cant],Cant)<br />
crear I[1..n,0..Cant]<br />
desde i ← 1 hasta n hacer<br />
I[i,0] ← 0<br />
fin desde<br />
desde j ← 1 hasta Cant hacer<br />
I[1,j] ← F[1,j]<br />
fin desde<br />
desde i ← 2 hasta n hacer<br />
desde j ← 1 hasta Cant hacer<br />
I[i,j] ← F[i,j]<br />
desde t ← 0 hasta j-1 hacer<br />
si I[i,j] < I[i-1,j-t]+F[i,t] entonces<br />
I[i,j] ← I[i-1,j-t]+F[i,t]<br />
fin si<br />
fin desde<br />
fin desde<br />
fin desde<br />
devolver I[n,Cant]<br />
fin fun<br />
Falta la obtención de<br />
los importes invertidos<br />
en cada uno de los<br />
bancos<br />
¿Cómo podría incluirse<br />
en este algoritmo?<br />
Yolanda García, Jesús Correas (DSIC - UCM) 19 / 32