【发布时间】:2013-02-09 06:11:42
【问题描述】:
我有几个不同大小的矩形。现在我需要一个算法来根据大小对矩形进行分类。
关键是它不是固定大小的。例如,一个宽度为 30 高度为 20 的矩形,另一个宽度为 31 高度为 19 的矩形应该放在一个组中。但是一个宽40高30的矩形应该放在另一个组中。
并且确定组的数量和大小应该是自动完成的。你推荐我什么算法...
事实上,我想根据形状对矩形进行分组,而不是按面积或间距。
【问题讨论】:
-
只有你知道应该使用什么规则来划分组......
-
它听起来就像你想使用矩形的面积,但实际上,只有你会知道什么是合适的算法
-
您已经举了一个例子,但信息太少,无法确定任何算法。 为什么将矩形放置在这些组中?
-
首先是数学和逻辑,而不是算法和 C#。您的问题非常特殊。您实际上并没有非常精确地告诉我们分组应该是什么。我可以尝试猜测您对 2 个主要变量感兴趣:宽度和高度,或者说比率和面积(我猜您不会考虑高度为 100 和宽度为 1 的高塔类似于小而坚固的 10x10框,对吗?所以有适合你的比率)。如果这是真的,那么做一个函数:Diff(r1,r2,a1,a2)=ABS(r1-r2)+ABS(a1-a2)。然后选择一个你认为是“相同”上限的阈值。
-
哈米德,你真的不在乎形状吗?您是否认为大小为 0.1 * 1000 的矩形与大小为 10 * 10 的矩形相同?
标签: c# algorithm sorting image-processing