Problema 1: Sea N un
entero
positivo y sea A un vector de N enteros positivos. Se desea saber
si
existe algún subconjunto de los elementos del vector tal que
sumen exactamente un entero S. Diseña un
algoritmo de programación
dinámica para resolver este problema. Escribe
un programa llamado exactaZZ
(donde ZZ es una
clave de
dos
dígitos asignada por el profesor) que implemente tu
algoritmo. La entrada a tu programa
será un entero N (con 1 <= N <= 100), un entero S (con 0
<= S <= 100,000) y un vector A (con 1 <= A[I] <= 1000)
y la
salida de
tu programa será un entero M (con 0 <= M <= 100) y un
vector B con M componentes (con B[1] < B[2] < ... < B[M])
tal
que S = A[B[1]] + A[B[2]] + ... + A[B[M]]. Puedes suponer que en
los
casos de prueba siempre habrá al menos una solución y
basta que des una de ellas.
Ejemplo de entrada | Un ejemplo de salida |
Otro ejemplo de salida |
6 12 3 1 4 1 5 9 |
3 1 3 5 |
2 1 6 |
Problema 2: Sean S y T dos cadenas de caracteres. Decimos que la cadena C es una subsecuencia común de S y T si los caracteres de C aparecen en ese mismo orden tanto en S como en T. Por ejemplo si S = "SEPTIEMBRE" y T = "TRIMESTRE" entonces C = "TIME" es una subsecuencia común de S y T ("sepTIeMbrE" y "TrIMEstre"), pero no es la más larga de todas las subsecuencia comunes. Diseña un algoritmo de programación dinámica para encontrar una subsecuencia común de S y T tan larga como sea posible. Escribe un programa llamado scomunZZ (donde ZZ es una clave de dos dígitos asignada por el profesor) que implemente tu algoritmo. La entrada a tu programa serán dos cadenas S y T (mayúsculas, sin acentos, cada una en un renglón separado, 100 caracteres como máximo) y la salida de tu programa será una subsecuencia común de S y T tan larga como sea posible. Puedes suponer que S y T siempre tendrán al menos un caracter en común.
Ejemplo de entrada |
Ejemplo de salida |
SEPTIEMBRE TRIMESTRE |
TIMRE |
Notas: Tus 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.