2011-06-06 61 views
1

我一直堅持這個問題幾天,我需要你的幫助。查找具有元素數量的行數/列數

我有一個動態數量的元素放入網格。
我有網格的寬度和高度。
我有網格中元素的比例。

我需要找到構建網格所需的行數和列數,以使網格儘可能地充滿。

任何想法如何計算?

+0

你說的比例是多少?你能舉一個寬度,高度和比例以及預期結果的例子嗎? – Emmanuel 2011-06-06 14:34:34

回答

0

好吧,直觀地看,如果你的寬度w和高度h是相同的,最好的方法是取你的元素數的平方根n,你就完成了!

例如:w = h = 5,n = 121 => x = sqrt(n) = sqrt(121) = 11 so 11行和列。

所以考慮到wh之間的比例,我們現在試圖找到x列和y行以相同的比例,即:

x * y = x * (x * h/w) = n => x = sqrt(n * w/h) 

例子:w = 7, h = 5n = 180 => x = sqrt(180 * 7/5) = sqrt(252) ~= 15.87四捨五入到16,並y = x * h/w ~= 15.87 * 5/7 ~= 11.33舍入爲11。我們最終得到了16列和11行(176 romms)180個元素,這是正確的,並保留了比例。這可以通過更加註意圓角來改善。