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