汉诺塔
2026-09-20 20:27:28
发布于:上海
1阅读
0回复
0点赞
这其实是一个古老的传说游戏;
3根柱子,把所有在A上的移动到C上,求每一步怎么移动;
头文件会写吧~~~
首先定义一个void函数(不知道的别看了)叫hnt(int h,char s,char e,char m)(我不知道我这段代码的作者为什么要把end写在middle的前面);
void hnt(int h,char s,char e,char m){
if(h==0) return;
hnt(h-1,s,m,e);
cout<<s<<" --"<<h<<"--> "<<e<<"\n";
hnt(h-1,m,e,s);
}
内部代码拆解给你看:
首先判断如果h是0那么代表结束了,直接return;
然后输出(注意格式!mePE了好几次)
两个内部hnt不用说了吧,递归必备!;
最后主函数不用说吧,输入n,然后hnt函数,内部写(n,'A','C','B');就行。
静待输出叭~~~
int main(){
int n;
cin>>n;
hnt(n,'A','C','B');
return 0;
}
最后发一遍完整代码,用去吧!!!
#include <iostream>
using namespace std;
void hnt(int h,char s,char e,char m){
if(h==0) return;
hnt(h-1,s,m,e);
cout<<s<<" --"<<h<<"--> "<<e<<"\n";
hnt(h-1,m,e,s);
}
int main(){
int n;
cin>>n;
hnt(n,'A','C','B');
return 0;
}
还有一件事
如果竞赛遇到这种题目最好用#include<bits/stdc++.h>万能头最好
别忘了这个东西,有可能要用别的功能!
这里空空如也







有帮助,赞一个