河内塔是一个难题的问题。我们有三个看台和n个光盘。最初,将光盘放置在第一支架中。我们必须将光盘放入第三个或目标支架,第二个或辅助支架可以用作帮助支架。
但是要遵循一些规则。
每个动作我们只能传送一张光盘。
只能从架子上取出最上面的光盘。
较大的光盘不会放在较小的光盘的顶部。
此问题可以通过递归轻松解决。首先,使用递归,将前(n-1)个光盘从源放置到辅助支架,然后将最后一个光盘从源放置到目标,然后再次将(n-1)光盘从辅助支架放置到目的支架。
Input: Number of discs: 3 Output: 1. Move disk 1 from A to C 2. Move disk 2 from A to B 3. Move disk 1 from C to B 4. Move disk 3 from A to C 5. Move disk 1 from B to A 6. Move disk 2 from B to C 7. Move disk 1 from A to C
toh(n, s, a, d)
输入:光盘数量,来源,辅助,目的地。
输出:将光盘从源移动到目标的步骤,并保持正确的规则。
Begin if n = 1, then display move disc from s to d toh(n-1, s, d, a) display move disc from s to d toh(n-1, a, s, d) End
#include<iostream> using namespace std; void TOH(int n, char s, char a, char d) { static int count = 0; //store number of counts if(n == 1) { count++; cout << count<< ". Move disk " << n << " from "<<s <<" to "<<d<<endl; return; //base case, when only one disk } TOH(n-1, s, d, a); //recursive call the function count++; cout << count<< ". Move disk " << n << " from "<<s <<" to"<<d<<endl; TOH(n-1, a, s, d); } int main() { int n; cout << "Enter the number of disks: "; cin >> n; TOH(n, 'A','B','C'); }
输出结果
Enter the number of disks: 3 1. Move disk 1 from A to C 2. Move disk 2 from A to B 3. Move disk 1 from C to B 4. Move disk 3 from A to C 5. Move disk 1 from B to A 6. Move disk 2 from B to C 7. Move disk 1 from A to C
问题内容: 这是我使用递归解决河内塔的Java代码: 我放置打印方法的地方重要吗?另外,我可以这样做吗: 问题答案: 以这种方式解决问题,无非是定义如何完成工作的策略。和你的代码: 基本上将您的策略定义为喜欢以下情况, 将 _ n-1个 磁盘从 _ “从” (源塔)移动到 _ “其他”_ (中间塔)。 然后将第 _ n 个磁盘从 _ “从” (源塔)移动到 _ “到”_ (目标塔)。 最后将
河内塔,是一个数学难题,由三个塔(钉)和多个环组成,如图所示 - 这些环具有不同的尺寸并以升序堆叠,即较小的环位于较大的环上。 这个拼图还有其他变化,其中磁盘数量增加,但塔数仍然相同。 规则 (Rules) 任务是将所有磁盘移动到另一个塔而不违反排列顺序。 河内塔要遵循的一些规则是 - 在任何给定时间,只能在塔之间移动一个磁盘。 只能删除“顶部”磁盘。 没有大磁盘可以放在小磁盘上。 以下是用三个磁
我在维基百科上看到这个求解河内塔的递归算法。谁能给我解释一下我是怎么得到这个算法的递推方程的? null 将N-1个光盘从A移动到B,这将使光盘n单独位于peg A上 将磁盘n从A移动到C 将N-1个光盘从B移动到C,使它们位于光盘N上 上面是一个递归算法,为了执行步骤1和3,对n-1再次应用相同的算法。整个过程是一个有限的步骤,因为在某一点上,算法将需要n=1。这一步,将单个光盘从pega移动到
主要内容:分治算法解决汉诺塔问题,汉诺塔问题的代码实现汉诺塔问题源自印度一个古老的传说,印度教的“创造之神”梵天创造世界时做了 3 根金刚石柱,其中的一根柱子上按照从小到大的顺序摞着 64 个黄金圆盘。梵天命令一个叫婆罗门的门徒将所有的圆盘移动到另一个柱子上,移动过程中必须遵守以下规则: 每次只能移动柱子最顶端的一个圆盘; 每个柱子上,小圆盘永远要位于大圆盘之上; 图 1 给您展示了包含 3 个圆盘的汉诺塔问题: 图 1 汉诺塔问题 一根柱子上摞
河图是一个低代码平台,通过可视化界面快速生成各种后台页面,极大减少开发成本。 特性 操作简单、功能强大的可视化编辑器 开箱即用、高质量后台管理系统模版 开发流程全部线上化,节省沟通、调试、运维成本 使用 React、TypeScript、nodejs、express 开发 兼容环境 现代浏览器、IE11 以上
雄辩http://laravel.com/docs/4.2/eloquent指南包括以下内容: 急负荷约束 有时,您可能希望立即加载关系,但也要指定立即加载的条件。下面是一个例子: 在本例中,我们急于加载用户的帖子,但前提是帖子的标题列包含单词“first”。 您如何扭转这种局面,以便您只获得标题栏包含单词“第一”的帖子的用户? 换句话说,我希望只有用户有一个包含单词“第一”的帖子,我想急切地加载