6
|
jedierikb grijalvaromero · 技术社区 · 15 年前 |
![]() |
1
5
如果您不关心最小化返回的矩形数,可以将思维过程简化为始终返回不超过8个矩形的思维过程:
如果需要,可以快速检查每个矩形
例如,在您的三个示例中,此解决方案将返回3、1和5个矩形,在最佳情况下(B包含在A中)返回0,在最差情况下(A包含在B中)返回8。 |
![]() |
2
0
假设我们用一对x,y坐标对表示矩形:x1,y1表示左上角,x2,y2表示左下角。假设Y坐标向下增加,X坐标从左向右增加。 现在,假设A和B的并集形成的矩形(根据您对并集的定义)是U。 所以,
现在我们有了更大的矩形u,我们可以用它来计算必须添加到(左/上矩形)中的较小的右下矩形,使其成为u。让我们称它们为rt和bot。 (这一次我假设a是左上角的矩形,如果它不交换a和b的话。同时假设布局与图片的布局相似。如果不是这样的话,你可以很容易地适应。
|
![]() |
3
0
很抱歉我不能给出有效的解决方案,但是… 起初,我会为你能想象到的每一个不同的情况画出如此美妙的图像。会有很多情况,你需要两个以上的矩形,或者只有一个,对吗? 我认为让rect包含其他的是微不足道的,但此时我想不出如何继续。:) 编辑:现在我正在考虑一个洪水填充算法,只需填充你的大矩形区域。但我可以想象,这有两个问题:如何使用洪水填充输出生成rect?这是正确的方法吗,或者有线性代数的解决方案吗? |
![]() |
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 9 月前 |
![]() |
Alisa Petrova · 在有向图中更改一对顶点以创建循环 9 月前 |
![]() |
Pengcheng · 这个简单的递归函数的输出是什么?你能详细解释一下吗? 10 月前 |
![]() |
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
![]() |
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
![]() |
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |