文章

113

粉丝

1

获赞

857

访问

27.3k

头像
Hanoi塔问题 题解:c++
P1082 复旦大学机试题
发布于2026年3月8日 14:28
阅读数 101

#include <bits/stdc++.h>
using namespace std;

//A(源)、B(辅助)、C(目标)
int sum;
void f(int n,char a,char b,char c){
    if(n == 1){
        sum++;
        cout << a << "-->" << c << "   ";
        if(sum%5 == 0) cout << endl;    //5步换行
        return;
    }
    f(n-1, a, c, b);   // 1. 把上面 n-1 个盘子从 a 移到 b(借助 c)
    f(1, a, b, c);     // 2. 把最下面 1 个盘子从 a 移到 c
    f(n-1, b, a, c);   // 3. 把 n-1 个盘子从 b 移到 c(借助 a)

}

int main(){
    int n;
    while(cin >> n && n != 0){
        sum = 0;
        f(n,'A','B','C');
        cout << endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发