如何计算将相同大小的立方体堆叠在一起所需的最小纸张面积?

问题描述 投票:0回答:1

参考:https://onlinejudge.org/external/103/10365.pdf

预期输出如下。

假设立方体的尺寸都是相同的 1x1x1 英寸

  • 要将 9 个立方体包裹在一起,最小纸张尺寸为 30 平方 英寸
  • 要将 10 个立方体包裹在一起,最小纸张尺寸为 34 平方英寸
  • 将 26 个立方体包裹在一起,最小纸张尺寸 是 82 平方英寸
  • 将 27 个立方体包裹在一起,需要最少的纸张 尺寸为 54 平方英寸
  • 将 100 个立方体包裹在一起,最小的 纸张尺寸为 130 平方英寸

我对解决方案的想法

要将 9 个立方体包裹在一起,所需的最少纸张如下。

  • 解决方案#1 想象一下所有的立方体都水平排列成一排。一共有 9 个相邻的立方体。纸张的宽度必须为 10 英寸长和 1 英寸高。由于有 4 个 9 英寸长的边和 2 个 1 英寸长的边,因此所需的纸张总面积为 4*10 = 40 平方英寸。

  • 解决方案#2 将 3 个立方体排堆叠在另一个立方体的顶部。我们有一个 3x3 的正方形。面积为 6*3^2 = 54 平方英寸

我无法想出更好的解决方案,所需的纸张面积最小为 30 平方英寸(如预期)!!!

algorithm math
1个回答
0
投票

好吧,我想我已经明白了。有时理解问题比找到答案更难,尤其是当问题包含错误时。您在上述问题中未能包含的 PDF 中的重要一点是,解决方案必须是矩形块 A x B x C。在这种情况下,表面积 S 为 2*(AB + AC + BC) 。为简单起见,假设 A <= B <= C.

如果我们忽略 PDF 中的预期输入 5,但您正确排除了它,那么对于 9,它必须是 1 x 1 x 9 或 1 x 3 x 3,给出 S_9 = 2*(1 + 9 + 9) = 38或 S_9 = 2*(3 + 3 + 9) = 30。

对于 10,它必须是 1 x 1 x 10 或 1 x 2 x 5,即 S_10 = 2*(1 + 10 + 10) = 42 或 S_10 = 2*(2 + 5 + 10) = 34。

对于 26,它必须是 1 x 1 x 26 或 1 x 2 x 13,即 S_26 = 2*(1 + 26 + 26) = 106 或 S_26 = 2*(2 + 13 + 26) = 82。

...等等。因此,要解决这个问题,您可以尝试将输入 N 分解为 3 个因子的所有方法,然后取表面积最小的一个。

© www.soinside.com 2019 - 2024. All rights reserved.