- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要找到由 n 个元素填充的网格的尺寸,给定纵横比。网格不必填满。
例如,如果 n=8 并且纵横比为 1:1,我应该得到一个 3 x 3 的网格。如果其中有 8 个元素,我将留下一个空单元格:
***
***
**
如果 n=13 并且纵横比为 1:2,我会得到一个 6 x 3 的网格:
******
******
*
我很确定对于任何 n 和任何比率都存在一种计算方法,但我在网上找不到任何东西(可能是因为我不知道这类问题的关键字) .
注意:这是我用 Javascript 制作的可视化,但我不需要 JS 代码,只需要一个算法。
最佳答案
第 1 步 - 求乘数:
如果纵横比为 3:4,则 a=3
,b=4
,n = elements
multi = math.ceil( SQRT(n/(a*b)) )
。
第 2 步 - 查找维度:dim1 = a * multi
; dim2 = b * multi
;
示例。
n = 59。a = 2,b = 3。
multi = math.ceil (SQRT (59 / (2*3))) = math.ceil( sqrt(9.833) ) = 4
dim1 = 2*4 = 8;
dim2 = 3*4 = 12;
8*12 = 96(所以 59 适合它)。以前是 54 (6x9) - 它太小了。
示例 2.
n = 24。a = 1,b = 2。
multi = math.ceil (SQRT (24 / (1*2))) = math.ceil( sqrt(12) ) = 4
dim1 = 1*4 = 4;
dim2 = 2*4 = 8;
4*8 = 32(所以 24 适合它)。
示例 3(完全完整)。
n = 27。a = 1,b = 3。
multi = math.ceil (SQRT (27 / (1*3))) = math.ceil( sqrt(9) ) = 3
dim1 = 1*3 = 3;
dim2 = 3*3 = 9;
3*9 = 27(所以 27(边界值)适合它)。
关于javascript - 针对给定纵横比用 n 个元素填充网格的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997860/
我有一张 table 。我希望它的数据垂直和水平居中。 我使用了 align="center"valign="middle" ,但它没有用。
我是一名优秀的程序员,十分优秀!