【发布时间】:2013-11-21 18:13:03
【问题描述】:
我在坐标系中有一个矩形区域 R 和一组位于 R 内的点 P。所有边都平行于轴,所有点都是整数。我想以这样的方式将 R 分成更小的矩形
(a) 矩形的边要么紧贴 R 的边,要么包含至少一个来自 P 和的点
(b) 在每个矩形内,距离 P 正好有一个点
我必须找到覆盖 P 中所有点的最小矩形数量。这里绘制了一个示例:http://i5.minus.com/jC5LnVhjk6soT.png 紫色线表示不正确的划分,因为上面的矩形不包含 P 中的点。然而,蓝线是完全可以的,因为两个矩形都有一个从 P 开始的点,所以正确的输出应该是:2,因为这是矩形的最小数量。
有人知道找到最小数字的算法/方法吗?
【问题讨论】:
-
我会查看动态编程解决方案。
-
有一件事我不清楚:如何创建这些矩形? (例如,
2x2矩形是有效的吗?) -
如果每个矩形都必须包含一个点,那么你需要正好 |P|矩形。边角上的点呢?他们被允许吗?如果是,它们是否计算所有相邻的矩形,它们都不计算或不同的东西?
-
重读问题后,我猜边角上的点是允许的,有时甚至是必需的,但不算在任何矩形内,对吧?
-
丹尼尔,没错。每个矩形内必须恰好有一个点,但边缘/角上的这些点不算在内。边缘上的点可能很多。所以例如你可以在 P 中有 12 个点,但只形成 2 个矩形,因为其中 10 个在一条直线上,另外两个算作其中的点。您需要边缘上的这些点来创建分割线。你不能随心所欲地越线:)
标签: algorithm coordinates rectangles