相关疑难解决方法(0)

河内塔:递归算法

虽然我对理解递归没有任何问题,但我似乎无法绕过河内塔问题的递归解决方案.以下是维基百科的代码:

procedure Hanoi(n: integer; source, dest, by: char);
Begin
    if (n=1) then
        writeln('Move the plate from ', source, ' to ', dest)
    else begin
        Hanoi(n-1, source, by, dest);
        writeln('Move the plate from ', source, ' to ', dest);
        Hanoi(n-1, by, dest, source);
    end;
End;
Run Code Online (Sandbox Code Playgroud)

我理解基本情况和将问题分解成小块的概念,直到您能够移动单个磁盘.但是,我无法弄清楚非基本情况下的两个递归调用是如何协同工作的.也许有人可以帮助我?谢谢.

recursion towers-of-hanoi

63
推荐指数
4
解决办法
16万
查看次数

盒子塔(堆叠立方体)

我上周完成了这个任务,但找不到一个好的算法来解决这个问题.所以这里是描述:

您可以通过不将较大的立方体放置到较小的立方体上来构建具有建筑立方体的稳定塔,并且如果不将较硬的立方体放入较轻的立方体中.制作一个程序,为您提供具有n个立方体的最高塔.
输入:
在in.txt的第一行中有多维数据集的数量n(1 = <n = <1000).下面的n行包括两个正整数,一个立方体的边长和重量(它们都不高于2000)没有相似的立方体,其中sidelength和wieght是相同的
输出:
你必须把最高稳定塔的m号写入out.txt.进入第二行,您必须从塔底到顶部写入塔的序数m.根据塔的高度,我们指的是所有立方体的边长(而不是立方体的数量).如果有多个解决方案,您可以
为输入和输出提供您想要的任何示例:
输入:
5
10 3
20 5
15 6
15 1
10 2
和输出:
3
2 1 5
这里是程序的限制.时间限制:0.2秒.内存限制:16 Mb

我希望你能帮助我解决这个问题.thx所有的帮助

algorithm dynamic-programming

2
推荐指数
1
解决办法
2862
查看次数