汉诺塔

相传在古印度圣庙中,有一种被称为汉诺塔(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');
}

运行结果如下:

 

 

 

全部评论

相关推荐

之前自己不懂事,投了字节,基本是自己第一次面试,一面就挂了
观水:前几天有个学化学的做前端,加上实习面了22次字节最后成功了
点赞 评论 收藏
分享
2025-12-10 19:36
湖北工业大学 Web前端
饿魔:看到在线简历了吧
点赞 评论 收藏
分享
01-12 09:24
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务