:: Enseignements :: ESIPE :: E3INFO :: 2013-2014 :: Algorithmique ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Récursivité terminale |
On poursuit l'écriture de fonctions récursives, un peu plus complexes, qui permettent de
résoudre des problèmes classiques, mais "coûteux"...
Exercice 1 - Sac à dos...
Reprendre la fonction de résolution du problème du sac à dos vu en cours
et la transformer afin qu'elle affiche une trace de son déroulement, les
sommes partielles cherchées ainsi que l'entier testé.
Exercice 2 - Tours de Hanoï
Ecrire un programme affichant (sous forme ASCII) les différents états
du problème des tours de Hanoï pour un entier positif n (petit).
Les plateaux seront symbolisés par des entiers de 1 à n.
On pourra utiliser scanf("%*c") pour attendre que l'utilisateur
tape une touche entre chaque mouvement.
Exercice 3 - Monayeur
Ecrire un programme permettant de résoudre le problème du monayeur:
étant donné une suite croissante de n entiers positifs
w0=1, w1, ... wn-1 et un entier
strictement positif S, trouver la suite
des coefficients a0, a1, ... an-1 telle que
S = Σi=0n-1 ai*wi et
Σi=0n-1 ai soit minimal.
La suite des wi (les valeurs des pièces) sera lue sur la ligne de commande,
et pourra être représentée par un tableau valeurs tel que valeurs[0]
soit égal à1.
On traitera le problème pour différentes valeurs de S entrées par l'utilisateur (arrêt
lorsqu'une valeur négative ou nulle est fournie).
Dans un premier temps, on affichera uniquement le nombre minimal de
valeurs intervenant dans la somme Σi=0n-1 ai.
La version suivante affichera la suite des coefficients ai, stockés
sous la forme d'un tableau coeffs.
Attention: il faudra penser à utiliser des copies de ce tableau lors des appels
récursifs pour pouvoir récupérer les "meilleurs" coefficients au final.
© Université de Marne-la-Vallée