网站建设兼职在哪找,物流信息网站有哪些,wordpress 问答模版,域名服务器ip地址汉诺塔1. 什么是汉诺塔2. 有关汉诺塔的有趣故事3. 利用动画来演示汉诺塔4. 如何用C语言实现汉诺塔1. 什么是汉诺塔
源于印度古老传说的益智玩具 汉诺塔#xff08;Tower of Hanoi#xff09;#xff0c;又称河内塔#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造… 汉诺塔1. 什么是汉诺塔2. 有关汉诺塔的有趣故事3. 利用动画来演示汉诺塔4. 如何用C语言实现汉诺塔1. 什么是汉诺塔
源于印度古老传说的益智玩具 汉诺塔Tower of Hanoi又称河内塔是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定在小圆盘上不能放大圆盘在三根柱子之间一次只能移动一个圆盘。 2. 有关汉诺塔的有趣故事
想象你来到某个热带丛林意外发现了十层之高的汉诺塔。正当你苦苦思索如何搬动它时林中出来一个土著毛遂自荐要帮你搬塔。他名叫二傻戴着一个草帽草帽上有一个2字号称会把一到二号盘搬到任意柱。你灵机一动问道“你该不会有个兄弟叫三傻吧”“对对老爷你咋知道的他会搬一到三号盘。“”那你去把他叫来我不需要你了。“于是三傻来了他也带着个草帽上面有个3字。你说”三傻你帮我把头三个盘子移到c柱吧。“三傻沉吟了一会走进树林你听见他大叫”二傻出来帮我把头两个盘子搬到C!“由于天气炎热你开始打瞌睡。朦胧中你没看见二傻是怎么工作的二傻干完以后走入林中大叫一声“老三我干完了!”三傻出来把三号盘从A搬到B然后又去叫二傻“老二帮我把头两个盘子搬回A!”余下的我就不多说了总之三傻其实只搬三号盘其他叫二傻出来干。最后一步是三傻把三号盘搬到C然后呼叫二傻来把头两个盘子搬回C事情完了之后你把三傻叫来对他说“其实你不知道怎么具体一步一步把三个盘子搬到C是吧”三傻不解地说“我不是把任务干完了”你说“可你其实叫你兄弟二傻干了大部分工作呀”三傻说“我外包给他和你屁相干”你问到“二傻是不是也外包给了谁“三傻笑了“这跟我有屁相干”你苦苦思索了一夜第二天你走入林中大叫“十傻你在哪”一个头上带着10号草帽的人十傻应声而出“老爷你有什么事”“我要你帮把1到10号盘子搬到C柱““好的老爷。“十傻转身就向林内走。“慢着你该不是回去叫你兄弟九傻吧““老爷你怎么知道的““所以你使唤他把头九个盘子搬过来搬过去你只要搬几次十号盘就好了对吗““对呀““你知不知道他是怎么干的““这和我有屁相干“你叹了一口气决定放弃。十傻开始干活。树林里充满了此起彼伏的叫声“九傻来一下“ “老八到你了““五傻。。。“”三傻。。。“”大傻“你注意到大傻从不叫人但是大傻的工作也最简单他只是把一号盘搬来搬去。若干年后工作结束了。十傻来到你面前。你问十傻“是谁教给你们这么干活的“十傻说“我爸爸。他给我留了这张纸条。”他从口袋里掏出一张小纸条上面写着“照你帽子的号码搬盘子到目标柱。如果有盘子压住你叫你上面一位哥哥把他搬走。如果有盘子占住你要去的柱子叫你哥哥把它搬到不碍事的地方。等你的盘子搬到了目标叫你哥哥把该压在你上面的盘子搬回到你上头。“你不解地问“那大傻没有哥哥怎么办“十傻笑了“他只管一号盘所以永远不会碰到那两个‘如果’也没有盘子该压在一号上啊。”但这时他忽然变了颜色好像泄漏了巨大的机密。他惊慌地看了你一眼飞快地逃入树林。第二天你到树林里去搜寻这十兄弟。他们已经不知去向。你找到了一个小屋只容一个人居住但是屋里有十顶草帽写着一到十号的号码。 作者Fireman A 链接https://www.zhihu.com/question/24385418/answer/257751077 来源知乎 3. 利用动画来演示汉诺塔 现有三个柱子A、B、C其中有n个圆盘在A柱上最终要实现把这n个圆盘从A柱借助B柱移动到C柱上。实现实现思路先将n-1个圆盘从A柱移动到B柱上然后将A柱上最后一个圆盘移动到C柱上最后再把B柱上的n-1个圆盘移动到C柱上。 三个盘子的汉诺塔
多个盘子的汉诺塔创意
4. 如何用C语言实现汉诺塔
#includestdio.hvoid move(char a,char b,int n)
{printf(把第%d个圆盘从%c-%c\n, n, a, b);
}
void H_tow(int n, char a, char b, char c)
{if (n 1){move(a, c, n);}else{H_tow(n - 1, a, c, b);//将A柱上的n-1个盘子借助C柱移向B柱move(a, c,n);//将A柱上最后一个盘子移向C柱H_tow(n - 1, b, a, c);//将B柱上的n-1个盘子借助A柱移向C柱}
}
int main()
{int n 0;scanf(%d, n);H_tow(n, A, B, C);return 0;
}如果这份博客对大家有帮助希望各位给恒川一个免费的点赞作为鼓励并评论收藏一下谢谢大家 制作不易如果大家有什么疑问或给恒川的意见欢迎评论区留言。