递归汉诺塔
2024-03-31 20:12:42
发布于:上海
87阅读
0回复
0点赞
代码如下,比较基础,解说在注释里
#include<iostream>
using namespace std;
void hanoi(int a,char pos,char tar) //a是层数,pos是当前柱子,tar是目标柱子
{
if(a==0) //0表示不用动了
{
return;
}
char temp;
if(tar=='A'&&pos=='B'||tar=='B'&&pos=='A') //标记第三根柱子(中转)
{
temp='C';
}
else if(tar=='A'&&pos=='C'||tar=='C'&&pos=='A')
{
temp='B';
}
else
{
temp='A';
}
hanoi(a-1,pos,temp); //先把上层的移到中转
cout<<pos<<" --"<<a<<"--> "<<tar<<endl; //移动当前步骤的底层
hanoi(a-1,temp,tar); //把上层从中转移到目标
}
int main()
{
int n;
cin>>n;
hanoi(n,'A','C'); //初始在A柱,目标C柱
}
这里空空如也
有帮助,赞一个