【发布时间】:2020-03-08 20:07:13
【问题描述】:
给定两个整数,我怎样才能使它们最小化,以使它们的乘积小于其他值,同时保持它们的相对比率?
这是形式问题。实际问题是这样的:我的宽度/高度像素分辨率包含随机值(任一维度从 1 到 8192)。我想调整成对的值,使它们的乘积不超过某个像素总数(例如:1000000),并且我需要确保调整后的分辨率的纵横比保持不变(例如:1.7777)。
天真的方法是运行一个循环,每次我从宽度中减去 1,调整高度以匹配纵横比,直到它们的乘积低于阈值。例如:
int wid = 1920;
int hei = 1080;
float aspect = wid / (float)hei;
int maxPixels = 1000000;
while (wid * hei > maxPixels)
{
wid -= 1;
hei = wid / aspect;
}
当然,对于这个问题,肯定有更分析的方法吗?
【问题讨论】:
-
这似乎更像是一个数学问题。
-
根据这需要的性能,天真的方法可能很接近 - 但请尝试“归位”,例如,将两个值除以 2 并查看您是否超出。有点像二分查找。围绕目标上下摆动。当你回家时减少步数乘数。我认为你的意思是“最大化”;)
-
也不确定您的意思是“正方形”吗?你的意思是……把它们相乘,对吧?
-
理解和公平。很高兴知道您的期望/要求是什么。会看这个。
标签: pixel resolution square