文章
35
粉丝
0
获赞
192
访问
6.5k
#include <bits/stdc++.h> //思路参考b站大佬NotOnlySuccess
using namespace std;
int cnt = 0;
void hanuota(int n, char from, char assist, char to)
{
if(n == 1) {
cnt ++;
cout << from << "-->" << to << " ";
if(cnt % 5 == 0) cout << '\n';
return;
} //最小问题,当只有一个 圆环,将圆环直接从from放到to
hanuota(n - 1, from, to, assist); //子问题1,n个圆环,先把上面n-1个圆盘从from经过to放到assist
cnt ++;
cout << from << "-->" << to << " "; //子问题2,把第n个圆环从from直接放到to
if(cnt % 5 == 0) cout << '\n';
hanuota(n - 1, assist, from, to);//子问题3,把n-1个圆环从assit经过from放到to
}
int main()
{
ios::sync_with_stdio(0); cin.tie(0);
int n;
while(cin >> n)
{
if(n == 0) break;
cnt = 0;
char aa = 'A';
char bb = 'B';
char cc = 'C';
hanuota(n, aa, bb, cc);
cout << '\n';
}
}
登录后发布评论
暂无评论,来抢沙发