我需要找到由n个元素填充的网格的尺寸,给定一个高宽比。网格不一定要满。
例如,如果n=8和高宽比为1:1,我应该得到一个3x3的网格。如果其中有8个元素,就会留下一个空单元格:
***
***
**如果n=13和高宽比为1:2,我将得到一个6×3网格:
******
******
*我确信有一种方法可以计算任意n和任何比率,但是我在网上找不到任何东西(可能是因为我不知道这类问题的关键字)。
注意:这是我用Javascript进行的可视化,但我不需要JS代码,只是一个算法。
发布于 2016-08-17 13:30:28
步骤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 (so 27 (边界值)适合它)。
https://stackoverflow.com/questions/38997860
复制相似问题