Hay tres postes A, B, C. En el poste A hay N discos de diferentes tamaños, los discos más grandes abajo y los más pequeños arriba. Se requiere mover todos los discos del poste A al poste C, manteniendo la regla de que el disco grande esté abajo y el pequeño arriba (se puede usar el poste B como auxiliar). En cada movimiento solo se puede mover el disco superior de un poste a la parte superior de otro poste. Por favor, muestra el proceso de movimiento.

Solución

Este es un tipo de problema de programación dinámica, y es más simple y conveniente implementarlo con recursión.

Para el problema de "mover moveSum discos del poste from al poste to (con la ayuda del poste by)", podemos lograrlo mediante los siguientes tres pasos:

  • Mover los moveSum-1 discos superiores del poste from al poste by (con la ayuda del poste to)
  • Mover el disco restante del poste from directamente al poste to
  • Mover los moveSum-1 discos del poste by al poste to (con la ayuda del poste from)

El flujo de ejecución es el siguiente:

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