Tarea 4 de Diseño de Algoritmos
Trimestre 2012 Otoño
Entrega: 19 de octubre de 2012 a las 22:00.
Problema 1 [5 puntos]:
Diseñe un
algoritmo usando la técnica de búsqueda
con retroceso
para resolver el siguiente problema: Dados dos enteros positivos N y
K
encuentre la cantidad F de formas distintas en que se puede escribir
N
como suma de K enteros positivos. Considere que dos formas son
idénticas si sólo difieren en el orden de sus
sumandos.
Por ejemplo, si N = 7 y K = 3 entonces F = 4 debido a que 7 = 1 + 1
+ 5
= 1 + 2 + 4 = 1 + 3 + 3 = 2 + 2 + 3. Escriba un
programa llamado ksumaZZ
(donde ZZ es la clave
de
dos
dígitos asignada por el profesor) basado en su algoritmo
que acepte como entrada dos enteros positivos N y K y que escriba
como
sallida el número F. Puede suponer que 1 <= K <= N
<=
100.
Ejemplo de entrada
|
Ejemplo de salida
|
7 3
|
4
|
Problema 2 [5 puntos]:
Sea N un entero
positivo. Una permutación
P del 1 al N es un arreglo P[1], P[2], ..., P[N] que contiene cada
entero del 1 al N exactamente una vez. Un punto fijo de una
permutación P del 1 al N es un entero I tal que P[I] = I.
Diseña un algoritmo de búsqueda
con
retroceso que
encuentre todas las permutaciones del 1 al N que no tienen puntos fijos. Por
ejemplo,
si N = 4 entonces hay 9 permutaciones sin puntos fijos que son [2,
1,
4, 3], [2, 3, 4, 1], [2, 4, 1, 3], [3, 1, 4, 2], [3, 4, 1, 2], [3,
4,
2, 1], [4, 1, 2, 3], [4, 3, 1, 2] y [4, 3, 2, 1]. Escribe
un programa llamado nofijoZZ
(donde ZZ es una
clave de
dos dígitos asignada por el profesor) basado en tu
algoritmo que
acepte como entrada un entero N y que
escriba como salida la cantidad de permutaciones del 1 al N sin
puntos
fijos. Puedes suponer que 0 < N < 32.
Ejemplo de
entrada |
Ejemplo de
salida |
4
|
9
|
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.