最佳地将不同尺寸的卡片放在纸上(来自面试)

时间:2014-10-14 03:09:45

标签: java c++ dynamic-programming

我在glassdoor上看到了这个有趣的访谈问题,但我找不到解决方案。

让我们假设我的纸张大小为8“×11”。我将如何设计一种最佳地将较小的卡片放在纸张上的算法。

现在我没有实际的卡片尺寸,但是对于这个例子我们假设较小的卡片是3“乘4”,7“乘2”和5“乘3”。

我知道这是一个打包问题,但我想知道如何使用动态编程来获得比蛮力更快的解决方案并同时处理旋转。

1 个答案:

答案 0 :(得分:0)

您可能会想到以下算法,因为它们具有时间复杂度O(n log n):

  1. First-Fit Decreasing Height(FFDH)算法
  2. Next-Fit Decreasing Height(NFDH)算法
  3. Hybrid First-Fit(HFF)
  4. Hybrid Next-Fit(HNF)