【问题标题】:Build a tallest tower by stacking the various blocks?通过堆叠各种块来建造最高的塔?
【发布时间】:2019-06-18 02:54:25
【问题描述】:

我遇到了下面的面试问题,但我无法理解这里需要做什么?

假设您正在尝试建造一座非常高的塔。你有一个 块的集合,使你的塔了。对于每种块类型, 你会得到你拥有的那种类型的块的数量,它的重量, 以及该块可以在其上方支撑的最大重量,包括 本身。假设(现在)所有块都具有相同的高度(1 仪表)。通过堆叠这些可以建造的最高的塔是什么 块?

下面是示例输入,每一行代表一个块类型,格式为“”

1   1  1
10  2  10
100 3  100

输出应该是:35

解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: java algorithm data-structures


    【解决方案1】:

    这是背包问题的变体: https://en.m.wikipedia.org/wiki/Knapsack_problem

    这是动态规划的经典例子。我不会在这里写下这个算法,因为无数人比我之前更擅长解释它,关于它的维基百科文章当然是一个好的开始。

    【讨论】:

      猜你喜欢
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多