前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汉诺塔问题的求解

汉诺塔问题的求解

作者头像
lexingsen
发布2022-02-24 20:10:17
1690
发布2022-02-24 20:10:17
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客

代码实现:

代码语言:javascript
复制
#include <iostream>
using namespace std;

void move(char a, char c) {cout << a << "->" << c << endl;}

void hanoi(int n, char a, char b, char c) {
	//如果只有一个盘子  直接从a移动到c
	if (n == 1)  move(a, c);
	else {
		//将n个盘子看成两个部分   1 和 n-1
		首先需要借助c柱将n-1和盘子从a移动到b
		hanoi(n-1, a, c, b);
		//将剩下的一个盘子直接从a移动到c
		move(a, c);
		//将在b柱上的n-1个盘子借助a柱从b移动到c
		hanoi(n-1, b, a, c);
	}
}


int main() {
	int n;
	cin >> n;
	hanoi(n, 'a', 'b', 'c');
	return 0;
}

时间复杂度:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档