【发布时间】:2013-03-05 03:35:53
【问题描述】:
我的数学不是很好,所以我很难将公式转换为代码,而且我找不到任何现成的谷歌搜索。我有一个包含很多小矩形的大矩形......我需要做的就是计算最大的空矩形。有谁能帮帮我吗?
这是我想出来的……没什么好说的,这是一个很大的失败。
Rect result = new Rect();
for (Double l = 0; l < bigRect.Width; ++l)
{
for (Double t = 0; t < bigRect.Height; ++t)
{
Double h = 0;
Double w = 0;
while ((h <= bigRect.Width) && (w <= bigRect.Height))
{
Rect largestEmpty = new Rect(l, t, w, h);
if (smallRects.TrueForAll(smallRect => !smallRect.IntersectsWith(largestEmpty)) && ((largestEmpty.Height * largestEmpty.Width) > (result.Height * result.Width)))
result = largestEmpty;
else
break;
++h;
++w;
}
}
}
【问题讨论】:
-
坐标是整数还是浮点数?
-
另外,您是否已经知道如何解决它?否则这个问题可能更适合 math.stackexchange.com 而不是 stackoverflow
-
我正在研究 WPF,所以通常坐标应该是 Double ......但整数最适合我的需要,是的,我读过一些关于如何解决它的东西......但正如我所说.. . 我很难从数学公式转换为代码。
-
显示你找到的公式
标签: c# .net algorithm dynamic-programming