#include<iostream>
using namespace std;
struct node {
public:
int number;
char i;
char j;
char k;
};
void move(char i,char k) {//从i到k,借助j
cout << i << "->" << k << endl;
return;
}
int main(void) {
int number = 0;
cout << "请输入汉诺塔层数:" << endl;
cin >> number;
node queue[1000];
int pop = 0;
queue[pop].number = number;
queue[pop].i = 'a';
queue[pop].j = 'b';
queue[pop].k = 'c';
node p;
pop++;
while (pop > 0) {
p = queue[pop - 1];
pop--;
if (p.number == 1) {
move(p.i, p.k);
}
else
if(p.number>1){
queue[pop].number = p.number - 1;
queue[pop].i = p.j;
queue[pop].j = p.i;
queue[pop].k = p.k;
pop++;
queue[pop].number = 1;
queue[pop].i = p.i;
queue[pop].j = p.j;
queue[pop].k = p.k;
pop++;
queue[pop].number = p.number - 1;
queue[pop].i = p.i;
queue[pop].j = p.k;
queue[pop].k = p.j;
pop++;
}
}
return 0;
}
01-02
889
09-16
601
11-11
490
12-14
4505