汉诺塔

相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

问题分析:

该问题需要把一个杆上的东西转移到C杆上(借助B杆)。该问题实际上是一个递归问题,解决问题的步骤可以分为一下三步:1.先把n-1个塔放到B杆上(借助C杆)2.把最大的盘子放到C杆上。3.把n-1个盘子放到C杆上(借助A杆)

其C++具体实现如下:

#include<iostream>
using namespace std;
void hanoi(int n,char A,char B,char C)
{
	if(n==1)
	cout<<A<<"->"<<C<<endl;
	else
	{
		hanoi(n-1,A,C,B);
		cout<<A<<"->"<<C<<endl;
		hanoi(n-1,B,A,C);
	}
}
int main(){
	int n;
	cout<<"请输入盘子的个数:"; 
	cin>>n;
	hanoi(n,'A','B','C');
}

运行结果如下:

 

 

 

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务