社区
数据结构与算法
帖子详情
【求算法】 求一组重叠矩形区域,对应的非重叠矩形组
god_fish
2008-04-14 04:53:57
设有一组矩形R1~Rn,可能重叠,求出对应的非重叠矩形组T1~Tm
例如:
输入:矩形组R1(0,0,100,100),R2(50,50,100,100)
对应输出:T1(0,0,100,50),T2(0,50,150,50),T1(50,100,100,50)
P.S.矩形用R(x,y,w,h)表示
...全文
225
14
打赏
收藏
【求算法】 求一组重叠矩形区域,对应的非重叠矩形组
设有一组矩形R1~Rn,可能重叠,求出对应的非重叠矩形组T1~Tm 例如: 输入:矩形组R1(0,0,100,100),R2(50,50,100,100) 对应输出:T1(0,0,100,50),T2(0,50,150,50),T1(50,100,100,50) P.S.矩形用R(x,y,w,h)表示
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
K_s_G
2009-06-16
打赏
举报
回复
?
tailzhou
2008-07-14
打赏
举报
回复
计算不重合部分可以这样;
若要添加的矩形 跟某已添加矩形有重叠;
1)某已添加矩形 完全包含 要添加的矩形;不用再添加;
2)要添加的矩形 完全包含 某已添加矩形 ;将要添加的矩形 分解成4个新的矩形,分别添加;
3)其他情况 ;将要添加的矩形 分解成2个新的矩形,分别添加;
tailzhou
2008-07-14
打赏
举报
回复
如果只要求结果不重合;
那么有一个比较简单的方法;
依次添加矩形;
计算“要添加的矩形”跟“已添加矩形集合”的不重合部分;
每一个不重合的部分都当作一个矩形添加到“已添加矩形集合”里去;
tailzhou
2008-07-14
打赏
举报
回复
不过结果可以不唯一;
T1(0,0,100,50),T2(0,50,150,50),T3(50,100,100,50) 可以
T1(0,0,100,100),T2(100,50,50,50),T1(50,100,50,100) 也可以
甚至分成7个50*50的都可以;
任意一个输出都可以?
tailzhou
2008-07-14
打赏
举报
回复
看错,原来是w,h
tailzhou
2008-07-14
打赏
举报
回复
"输入:矩形组R1(0,0,100,100),R2(50,50,100,100)
对应输出:T1(0,0,100,50),T2(0,50,150,50),T1(50,100,100,50) "
怎么会出来150的坐标的?
god_fish
2008-07-14
打赏
举报
回复
UP还未解决
hyram
2008-05-21
打赏
举报
回复
mark
食人族哲学家
2008-05-19
打赏
举报
回复
踩个脚印,有空帮你想想,要是得到一个rgn还好整
UltraBejing
2008-05-01
打赏
举报
回复
以后需再关注,现在先帮你顶一下
knowledge_Is_Life
2008-05-01
打赏
举报
回复
好像没那么简单,呵呵.
meiZiNick
2008-05-01
打赏
举报
回复
没遇到过这种情况.
大王派我去巡山
2008-04-16
打赏
举报
回复
用扫描的方法可以很好地解决这个问题,想像一条垂直扫描线从左往右移动,途中经过了所有的矩形。
首先把矩形的表示方式改一下,改成(l,t.r.b)的形式,其中:
l=x;
t=y;
r=x+w;
b=y+h
其实就是改成了(左,上,右,下)的形式,这样更方便判断矩形是否相交,也便于描述一些。
然后将n个矩形中的l和r值(一共2*n个数据)混合在一起由低到高排序(如果出现值相等的情况,那就根据y值或b值小到大的顺序来判断谁前谁后)。注意这里用的是结构数据,不但要记录l和r的数值,还要记清楚这个值来自哪个矩形。
排序之后,将这2*n个值看作是“事件点”,后面的算法就是基于“事件点”来进行调度的。
我们用一个集合S来记录目前这条垂直扫描线穿过了哪些矩形,初始化的时候S是个空集。
遍历所有的事件点,有两种情况:
1)如果事件点是左边界l,则将对应的矩形插入S;
2)如果事件点是右边界r,则将对应的矩形从S中删除。
整个遍历的过程就好比是扫描线从左往右扫描了一遍,经过了所有的矩形。
两个相邻事件点之间,如果这时S不为空的话,就切出了一个个小矩形,当然纵向上还有一个判断矩形是否交叉去除重复的过程。
整个算法的复杂度是O(n^2),如果对S做一些优化(主要是便于优化和查找),还有进一步优化的余地。
不够完善的地方是最后出来的结果可能并不是最“简洁”的,也就是说,结果中有些矩形还可以合并成一个。如果想追求完美的话,最后再把最终结果(出来之后就是已经排好序的小矩形集合)扫描处理一遍就可以了。
god_fish
2008-04-15
打赏
举报
回复
UP
【
算法
】
重叠
矩形
,
求
重叠
位置最多的,以及
重叠
个数
如果两个或者多个
矩形
有公共
区域
则认为它们是相互
重叠
的(不考虑边界和角落)。请你计算出平面内
重叠
矩形
数量最多的地方,有多少个
矩形
相互
重叠
。平面内有n个
矩形
,第i个
矩形
的左下角坐标为。
【
算法
题】
矩形
重叠
如果相交的面积为正,则称两
矩形
重叠
。需要明确的是,只在角或边接触的两个
矩形
不构成
重叠
。 给出两个
矩形
,判断它们是否
重叠
并返回结果。 示例 1: 输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出:true 示例 2...
算法
题解之网易2018春招编程之最大
重叠
矩形
个数
题目描述:平面内有n个
矩形
,左下角坐标(x1[i],y1[i]),右上角坐标(x2[i],y2[i]),判断
重叠
矩形
最大数目是多少。 * 如果有两个或多个
矩形
有公共
区域
,则认为它们是
重叠
的,不考虑边界和角落。请计算出平面内
重叠
...
重叠
矩形
的合并
输入
一
组
矩形
,这些
矩形
的边与坐标轴平行,要
求
合并
重叠
的
矩形
并输出合并后的结果。
【数据结构与
算法
】之深入解析“
矩形
重叠
”的
求
解思路与
算法
示例
矩形
以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标,
矩形
的上下边...如果相交的面积为 正 ,则称两
矩形
重叠
。需要明确的是,只在角或边接触的两个
矩形
不构成
重叠
。...
数据结构与算法
33,027
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章