目录
咱直接上代码
一:递归解决
例子1
#include<iostream>
static int sum=0;
using namespace std;
void hanoi(int n, char a, char b, char c){//a起始位置,b最终位置,c暂存位置
if(n==1){
sum++;
cout<<"第"<<sum<<"步,"<<"将盘子从 "<<a<<"柱移动至"<<b<<"柱"<<endl;
}else{
hanoi(n-1, a, c, b);
sum++;
cout<<"第"<<sum<<"步,"<<"将盘子从"<<a<<"柱移动至"<<b<<"柱"<<endl;
hanoi(n-1, c, b, a);
}
}
int main()
{
int n;
cin>>n;
hanoi(n, 'a','b','c');
return 0;
}
例子2
#include<bits/stdc++.h>
using namespace std;
int sum=0;//步数累加
int hanoi(int n,int a,int b,int c)
{ // 盘子数 起始1 目标3 暂存2
if(n==1)//递归结束条件
{
sum++;
cout<<"第"<<sum<<"步:盘子从"<<a<<"柱移至"<<b<<"柱"<<endl;
return 0;
}
else//递归具体操作(为了使程序简洁,也可去掉else)
{
hanoi(n-1,a,c,b);
sum++;
cout<<"第"<<sum<<"步:盘子从"<<a<<"柱移至"<<b<<"柱"<<endl;
hanoi(n-1,c,b,a);
}
}
int main()
{
int x;
cin >> x;
hanoi(x,1,3,2);//调用函数
return 0;
}