文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言实现汉诺塔(图文详解)

2024-04-02 19:55

关注

汉诺塔的游戏规则:

有三根金刚石柱子A、B、C,在A柱子上从下往上按照大小依次减小的顺序摞着64片黄金环。大梵天命令婆罗门把环从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在任何一个柱子上,小环上不能放大环,在三根柱子之间一次只能移动一个环。

即将A柱子上全部的环通过中间柱子B(B柱子作为中介)移动到C柱子上

当A只有一个环的时候:

A->C

当A只有两个环的时候:

A->B A->C B->C

当A只有三个环的时候:

A->C A->B C->B A->C B->A B->C A->C

思路:

1、将 n-1个环先放到B柱子上
2、将A柱子上的最后一个环移动到C柱子上
3、将n-1个环从B柱子移动到C柱子上

当n=1时:

1、将0个环先放到B柱子上

2、将A柱子上的最后一个环移动到C柱子上:A->C

3、将0个环从B柱子移动到C柱子上

当n=2时:

1、将1个环先放到B柱子上:A->B

2、将A柱子上的最后一个环移动到C柱子上:A->C

3、将1个环从B柱子移动到C柱子上:B->C

当n=3时:

1、将2个环先放到B柱子上:使用递归将2个环放到B上,因为A柱子的最后一个环是最大的因此可以先不理会,递归重复当n=2时的步骤,不过是从将2个环从A放到C上改为将2个环从A放到B上了

2、将A柱子上的最后一个环移动到C柱子上:A->C

3、将2个环从B柱子移动到C柱子上:使用递归将2个环从B柱子移动到C柱子上,此时C柱子上已经有了最大的一个环因此可以不用再理会了,递归重复当n=2的步骤,不过是从将2个环从A放到C上改为将2个环从B放到C上了

当n=4时:

1、将3个环先放到B柱子上:递归重复n=3的步骤,不过是从将3个环从A放到C上改为将3个环从A放到B上了

2、将A柱子上的最后一个环移动到C柱子上:A->C

3、将3个环从B柱子移动到C柱子上:递归重复当n=3的步骤,不过是从将3个环从A放到C上改为将3个环从B放到C上了

见代码


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void move(char X, char Y)
{
	printf("%c->%c ", X, Y);
}

void HanoiTower(int n, char A, char B, char C)
{
	if (n == 1)//递归终止条件
	{
		move(A, C);
		return;
	}
		
	else
	{
		HanoiTower(n - 1, A, C, B);//将n-1个环从A柱子放到B柱子上,C柱子作为中介
		move(A, C);//将A柱子上的最后一个环移动到C柱子上
		HanoiTower(n - 1, B, A, C);//将n-1个环从B柱子放到C柱子上,A柱子作为中介
	}
}


int main()
{
	printf("请确认A柱子上一共有多少个环:\n");
	int n = 0;
	scanf("%d", &n);
	HanoiTower(n, 'A','B','C');//将n个环从A柱子放到C柱子上,B柱子作为中介
}

运行截图

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注编程网的更多内容!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯