假设我们有一个 N 框。我希望将它们分布在12列网格中,以便在任何情况下都填充每一行。
盒子的宽度应尽可能相同。每个方框的最小宽度为3。
不幸的是,我无法想出一个解决方案来计算给定 N 的每个框的宽度(手动除外)。
| 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 |
答案 0 :(得分:0)
因此,您需要在加数1,2,3,4中找到数字N的分区,最大化相似或近似加数的数量,更喜欢具有最大单一系数(例如,c)或邻居系数(b,c)的解决方案
(硬币变化问题的变种之一)
a * 1 + b * 2 + c * 3 + d * 4 = N
您可以使用动态编程构建此等式的解,使用可能变体列表填充数组[0..N],并选择最佳变体。
可能在DP构建期间使用预选(不包括像+ d这样的变体),但我不确定这种方法总能找到好的解决方案。