C语言 汉诺塔问题
2020-12-24 18:29
标签:font 写代码 ima microsoft style char size span 汉诺塔问题 汉诺塔运用到了分治的思想,把一个完整的塔给拆分成了两个部分: 假设一个塔有n各部分,那么将其分为两个部分:前n-1块为上半部分,第n个(即最下面一个为下半部分)
想要把上下两层的汉诺塔完整的移动到第三个轴处,只需要将上一层(n-1层)先从A柱借助C柱移动到B柱,然后把下半层(n层)移动到C柱,最后将放在B柱上的n-1层借助A柱放到C柱上,那么整个过程就成功了 第一步,先将上面n-1层(假设一共有n层)借助C柱全部放到B上:因为上层必须经过C才能按上小下大的顺序全部放到B上,所以这里强调必须经过C柱。 伪代码可表示为:hanoi(n-1,A,C,B)//n-1层从A借助C移动到B 第一步 移动结束:
第二步:把A柱剩下的最大块直接移动到C柱:伪代码就相当于move(A,C) 第三步:把B柱的n-1层借助A柱全部按上小下大移动到C上面(必须说明的是因为B上的n-1块板子如要按照上小下大的顺序完整的移动到C上面一定是要经过A这个柱子的。从分治的角度出发说明,中间的某些块必定要经过B,只是由于把整体分成了两大块所以忽视了,但是写代码的时候一定是要写上的) 伪代码可表示为hanoi(n-1,B,A,C)
中间必定会从A再到C 落到A以后再到C 这就是完整的汉诺塔移动规律 代码可以写为 C语言 汉诺塔问题 标签:font 写代码 ima microsoft style char size span 汉诺塔问题 原文地址:https://www.cnblogs.com/oldfish123/p/13209494.html#include
上一篇:6.29 数组和方法调用