我需要找到与某个值完全相等(或在0.001内)的长宽比的最小尺寸。有没有快速的数学技巧或框架技巧可以做到这一点?
这是我目前想到的一个效率不高的解决方案的伪代码,时间复杂度为O(n^2):
这是我目前想到的一个效率不高的解决方案的伪代码,时间复杂度为O(n^2):
epsilon = 0.001;
from x = 1 to MAX_X
{
from y = 1 to MAX_Y
{
if(Abs(x / y - aspectRatio) <= epsilon)
{
return new Size(x, y);
}
}
}
return Size.Empty;
Abs(..)
?这个数字从来不会是负数... - Abel0.001
的分数(例如,x = 1,y = 1000)。但根据您的描述,我想您有一个比率,比如3.8
,并找到等于该比率的 x 和 y,即 x = 38,y = 10(假设只需要整数),最大偏差为epsilon
(即 38001 和 1000 也是一个好答案)。这正确吗?如果是这样,一个问题是偏差不是相对于因子的。我认为它应该是一个百分比。 - Abel