Es gibt drei Stäbe A, B und C. Stab A hat N Scheiben unterschiedlicher Größe, wobei größere Scheiben unten und kleinere Scheiben oben liegen. Das Ziel ist, alle Scheiben von Stab A auf Stab C zu bewegen, wobei die Regel eingehalten wird, dass größere Scheiben unter kleineren Scheiben liegen (Stab B kann als Hilfsstab verwendet werden). Bei jedem Zug kann nur die oberste Scheibe eines Stabs auf die Oberseite eines anderen Stabs bewegt werden. Bitte geben Sie den Bewegungsablauf aus.
Antwort
Dies ist eine Art Problem der dynamischen Programmierung, und es lässt sich relativ einfach und bequem mit Rekursion implementieren.
Für das Problem "moveSum Scheiben vom from-Stab zum to-Stab zu bewegen (unter Verwendung des by-Stabs)" können wir es in den folgenden drei Schritten erledigen:
- Bewegen Sie die obersten moveSum-1 Scheiben vom from-Stab zum by-Stab (unter Verwendung des to-Stabs)
- Bewegen Sie die verbleibende 1 Scheibe vom from-Stab direkt zum to-Stab
- Bewegen Sie die moveSum-1 Scheiben vom by-Stab zum to-Stab (unter Verwendung des from-Stabs)




Der Ausführungsprozess ist wie folgt:


Original-Link: https://blog.51cto.com/myunix/2399892