对于汉诺塔问题的求解,可以通过以下三个步骤实现:
将塔A上的n-1个碟子借助塔C先移到塔B上。
把塔A上剩下的一个碟子移到塔C上。
将n-1个碟子从塔B借助塔A移到塔C上。
#include <iostream>
using namespace std;
void hannuo(int a, int b, int c, int n) {
if (n == 1) {
cout << "move disk " << n << " from peg " << a << " to peg " << c << endl;
} else {
hannuo(a, c, b, n - 1);
cout << "move disk " << n << " from peg " << a << " to peg " << c << endl;
hannuo(b, a, c, n - 1);
}
}
int main(void) {
int times;
cin >> times;
while (times--) {
int n;
cin >> n;
hannuo(1, 2, 3, n);
}
}