/*lijingjing
利用分治思想将问题分到最小模块即,1个盘时只需A->C
单位为2块,A->B A->C B->C
所以将所有盘分成最大盘和其余盘两个盘n和n-1两盘
先将n-1盘借助C移动到B盘上即(A,B,C) A->B
然后将n盘移动到C上面 A->C
借助A将n-1盘移动到C盘(B,A,C) B->C
*/
#include<iostream>
using namespace std;
void Hannuo(char A,char B,char C,int n)
{
if(n<2)
{
cout<<A<<"->"<<C<<endl;
return;
}
else
{
Hannuo(A,C,B,n-1);
cout<<A<<"->"<<C<<endl;
Hannuo(B,A,C,n-1);
}
}
int main()
{
int n;
cin>>n;
int a,b,c;
a='A';b='B';c='C';
Hannuo(a,b,c,n);
return 0;
}
分治 递归 汉诺塔问题
最新推荐文章于 2024-05-01 09:55:55 发布