递归之汉诺塔
程序员文章站
2022-04-13 15:59:41
...
1.汉诺塔
/*
有A,B,C三个柱子,将A柱子上的N个盘子(从大到小排列)移到C柱子上,每次只允许移动一个盘子,并且保证每个柱子上的盘子的排列都是从大到小
url:https://www.cnblogs.com/zcy773883/p/10807599.html
*/
#include<iostream>
using namespace std;
void hanoi(int n,char a,char b,char c)
{
if(n==1)
cout<<"将第"<<n<<"个盘子从"<<a<<"移到"<<c<<endl;
else{
hanoi(n-1,a,c,b);//a借助c将 n-1 盘子移到 b 上
cout<<"将第"<<n<<"个盘子从"<<a<<"移到"<<c<<endl;//将剩余的一个盘子移到 c 上去
hanoi(n-1,b,a,c);//将 b 上的 n-1 个盘子移到 c 上
}
}
int main()
{
int n;
cin>>n;
char a='a',b='b',c='c';
hanoi(n,a,b,c);
return 0;
}