Il y a trois piquets A, B et C. Le piquet A contient N disques de tailles différentes, les plus grands disques en bas et les plus petits en haut. Le but est de déplacer tous les disques du piquet A vers le piquet C, en respectant la règle selon laquelle les grands disques sont sous les petits (le piquet B peut servir d'auxiliaire). Chaque déplacement ne peut déplacer que le disque le plus haut d'un piquet vers le haut d'un autre piquet. Veuillez afficher le processus de déplacement.

Réponse

Il s'agit d'un type de problème de programmation dynamique, et il est relativement simple et pratique à implémenter avec la récursivité.

Pour le problème de « déplacer moveSum disques du piquet from vers le piquet to (en utilisant le piquet by) », nous pouvons l'accomplir en suivant les trois étapes suivantes :

  • Déplacer les moveSum-1 disques du dessus du piquet from vers le piquet by (en utilisant le piquet to)
  • Déplacer directement le disque restant (1) du piquet from vers le piquet to
  • Déplacer les moveSum-1 disques du piquet by vers le piquet to (en utilisant le piquet from)

Le processus d'exécution est le suivant :

Lien original : https://blog.51cto.com/myunix/2399892