我正在尝试创建一个网格,该网格必须具有足够的行和列以适应length
单元格的数量。这里有些例子:
- Length: 8: 2 rows x 4 cols - Length: 9: 3 rows x 3 cols - Length: 10: 5 rows x 2 cols - Length: 11: 4 rows x 3 cols (with one extra)
我想出了一个解决方案,使用平方根,它给了我一个非常接近的解决方案:
var cols = Math.ceil(Math.sqrt(length)); var rows = Math.ceil(length / cols);
可以有额外的单元格(比如素数),但我更喜欢尽可能地减少它们。这种方法的问题是,当可能有更优化的解决方案时,我得到的是空单元格:
- Length: 8: returns 3 x 3, but 2 x 4 has 0 remainders - Length: 10: returns 4 x 3, but 5 x 2 has 0 remainders - Length: 15: returns 4 x 4, but 5 x 3 has 0 remainders
有没有其他方法可以优化我的网格以获得尽可能少的额外单元格?我觉得我的尝试不是最佳的。
莫回无
繁华开满天机
相关分类