在12列网格中分发盒子

时间:2016-05-16 19:36:28

标签: math grid

假设我们有一个 N 框。我希望将它们分布在12列网格中,以便在任何情况下都填充每一行。

盒子的宽度应尽可能相同。每个方框的最小宽度为3。

不幸的是,我无法想出一个解决方案来计算给定 N 的每个框的宽度(手动除外)。

N的实例为1至7

| N |  Grid   |
+---+---------+
|   |         |
| 1 |   12    |
|   |         |
| 2 |  6  6   |
|   |         |
| 3 |  4 4 4  |
|   |         |
| 4 | 3 3 3 3 |
|   |         |
| 5 |  6  6   |
|   |  4 4 4  |
|   |         |
| 6 |  4 4 4  |
|   |  4 4 4  |
|   |         |
| 7 |  4 4 4  |
|   | 3 3 3 3 |

1 个答案:

答案 0 :(得分:0)

因此,您需要在加数1,2,3,4中找到数字N的分区,最大化相似或近似加数的数量,更喜欢具有最大单一系数(例如,c)或邻居系数(b,c)的解决方案
(硬币变化问题的变种之一)

a * 1 + b * 2 + c * 3 + d * 4  = N

您可以使用动态编程构建此等式的解,使用可能变体列表填充数组[0..N],并选择最佳变体。

可能在DP构建期间使用预选(不包括像+ d这样的变体),但我不确定这种方法总能找到好的解决方案。