#include "pch.h" #include <iostream> //#include <cmath> //#include <climits> using namespace std; int hanoi(int n, char src, char medium, char dest); void move(char src, char dest); int main() { int n; int a; cin >> n; a = hanoi(n, 'A', 'B', 'C'); cout << a; return 0; } int hanoi(int n, char src,char medium,char dest) { static int sum=0; sum++; if (n == 1) move(src, dest); else { hanoi(n - 1, src, dest, medium); move(src, dest); hanoi(n - 1, medium, src, dest); } return sum; } void move(char src, char dest) { cout << "move " << src << " to " << dest << endl; }
主要采用遞歸的思想,假設三個塔A,B,C。根據漢諾塔規則,需要將A轉移至C,借助中間量C。對於一個n層漢諾塔,只需將n-1層移至B,將第n層移至C,此時再以A為中間量將當前B中的n-1層中的n-2層移至A,最后一層移至C,如此循環,即可將所有盤移至C,並按順序放置。