Tarea 7 de Análisis y Diseño de Algoritmos
Trimestre 2014 Invierno
Entrega: 24 de febrero de 2014 a las 22:00.
Algunas personas piensan que los perros que ladran mucho muerden
poco. Para demostrar lo contrario se quiere analizar una colección
de perros y escoger tantos de ellos en una secuencia en la que tanto
el número de ladridos como el número de mordidas vayan en orden
creciente. Sea P un entero positivo que denota al número de perros
en la colección, L[1], L[2], ..., L[P] un vector de enteros
positivos indicando el número de ladridos de cada uno de los P
perros y M[1], M[2], ..., M[P] el número de mordidas de cada uno de
los P perros. Diseñe un algoritmo de programación dinámica que
encuentre la máxima longitud S de la secuencia con las propiedades
pedidas. En otras palabras, si los L perros escogidos son los perros
I1, I2, ..., IS entonces M[I1]
< M[I2] < ... < M[IS] y L[I1]
< L[I2] < ... < L[IS]. Por ejemplo,
si P = 4, L = (3, 1, 4, 2) y M = (2, 7, 1, 8) entonces S = 2 ya que
se puede escoger a los perros 2 y 4 con M[2] < M[4] y L[2] <
L[4]. Escriba un programa llamado muerdeZZ (donde ZZ es una clave de dos dígitos asignada por el
profesor) basado en su algoritmo que acepte como entrada un número
entero P, seguido de un renglón con P números enteros L[1], L[2],
..., L[P] separados por espacios y seguido de un renglón con otros P
números enteros M[1], M[2], ..., M[P] y que escriba como salida la
máxima longitud S de la secuencia con las propiedades pedidas. Puede
suponer que todos los números involucrados son enteros del 1 al
10,000.
Ejemplo de entrada
|
Ejemplo de salida
|
4
3 1 4 2
2 7 1 8 |
2
|
Notas: Sus programas no deben leer ni escribir nada
adicional a lo que se indica en el enunciado. El tiempo
de ejecución de sus algoritmos será considerado como parte de la
evaluación.