汉诺塔问题--算法

时间:2021-08-04 09:54:47

main.cpp

#include<iostream>
using namespace std;
//|汉诺塔
//|从x针借助y针 移动到z针
void move(int n,char x,char y,char z)
{
if(n==1)
{
cout<<x<<"--->"<<z<<endl;
}else{
//|从x借助z移动到y
move(n-1,x,z,y);
//|x移动到z
cout<<x<<"--->"<<z<<endl;
//|从y借助x移动到z
move(n-1,y,x,z);

}
}

int main(int argc,char * argv[])
{
int i=0;
cout<<"汉诺塔!\n请输入汉诺塔的层数:"<<endl;
cin>>i;
move(i,'x','y','z');

return 0;
}

汉诺塔!请输入汉诺塔的层数:3x--->zx--->yz--->yx--->zy--->xy--->zx--->zPress any key to continue