C'est un jeu de réflexion qui consiste à déplacer un nombre donné de disque d'une tour "départ" à une tour "arrivée", à l'aide d'une troisième tour "intermédiaire" et ceci en respectant deux règles :
- Ne déplacer q'un seul disque à la fois.
- Ne pas placer un disque sur un autre plus petit.
Exemple de résolution pour le cas de 4 disques :
J'avoue que la première fois j'avais du mal à comprendre l'algorithme récursive de la résolution surtout du fait que la notion de récursivité été encore fraîche et un peu mystérieuse pour moi, mais après j'ai constaté qu'il n'y avait pas une autre solution plus facile :p
La solution en langage C :
#include <stdio.h> void hanoi(int n,char A,char B,char C) { if(n==1) printf("deplacer %c vers %c\n",A,C); else { hanoi(n-1,A,C,B); printf("deplacer %c vers %c\n",A,C); hanoi(n-1,B,A,C); } } main() { char a='a',b='b',c='c'; int n; while(1) { printf("Entrer n : "); scanf("%d",&n); printf("\n"); hanoi(n,a,b,c); } }
Ce commentaire a été supprimé par l'auteur.
RépondreSupprimerquel est la complexite ?
RépondreSupprimerj'aimerai bien avoir la solution en c++ svp
RépondreSupprimer