判断多个矩形是否可以合成一个大矩形

pig357 2015-02-27 09:44:10
前几天笔试遇见一个问题,求一个简单的算法。
已知N个矩形的坐标和大小,判断这些矩形能否组成一个大的矩形。比如:
...全文
1281 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
pig357 2015-04-28
  • 打赏
  • 举报
回复
我似乎明白了些,谢谢大家了
panghuhu250 2015-04-26
  • 打赏
  • 举报
回复
扫描线算法 + 线段树, 复杂度O(n logn).
yyfhz 2015-04-23
  • 打赏
  • 举报
回复
将所有的x坐标和所有的y坐标排序后记录在案,这些坐标可构成4n*n个小矩形,则对于原始矩形来说,它要么完全覆盖某个小矩形,要么完全不覆盖,可以通过构造01矩阵,最后判断矩阵中有无0元素就可以知道能否合并成大矩形了,不过性能就比较离谱了,有n^4。
  • 打赏
  • 举报
回复
首先声明,我是来看水猪的! 貌似必要条件是每个rectangle都和其它的n-1个rects intersect or touch,然后再看坐标里lowest left, uppermost left, uppermost right, lowest right是否构成一个rectangle,这个总可以了吧?
pig357 2015-04-17
  • 打赏
  • 举报
回复
引用 13 楼 porenasckx 的回复:
回字形的也不算么?
当然不算大矩形啦
E次奥 2015-04-03
  • 打赏
  • 举报
回复
回字形的也不算么?
风吹腚腚凉 2015-03-26
  • 打赏
  • 举报
回复
引用 11 楼 pig357 的回复:
[quote=引用 9 楼 wjfwd2010 的回复:] 分数组找线段,比如最上面一条线的,全放一个数组里,左边的也是,一共4个数组,然后遍历数组验证长度是否等于大于总长度。
没有理解,能不能说详细点,谢谢[/quote]\ 先确定4个点,根据这4点去找边,每个边其实是由N个正方形的同一个方向的边组成的,然后找到这些边放到一个数组里去,然后验证这个边的长度是否大于或者等总长度,当然要减去重叠部分的边
pig357 2015-03-26
  • 打赏
  • 举报
回复
引用 9 楼 wjfwd2010 的回复:
分数组找线段,比如最上面一条线的,全放一个数组里,左边的也是,一共4个数组,然后遍历数组验证长度是否等于大于总长度。
没有理解,能不能说详细点,谢谢
zhouxiaofeng1021 2015-03-17
  • 打赏
  • 举报
回复
这个在算法导论中好像有类似的解题方法,还有编程之美 区间合并的问题
欢乐的小猪 2015-03-04
  • 打赏
  • 举报
回复
引用 5 楼 EganLi 的回复: 4个矩形首尾相连形成的一个矩形,中间出现镂空,是否算做一个符合要求的矩形? 当然不算啊,就是要判断中间是否有空白部分。 你给的例图里面重叠算,镂空就不算?
pig357 2015-03-04
  • 打赏
  • 举报
回复
引用 5 楼 EganLi 的回复:
4个矩形首尾相连形成的一个矩形,中间出现镂空,是否算做一个符合要求的矩形?
当然不算啊,就是要判断中间是否有空白部分。
引用 1 楼 ohmygirl 的回复:
这图画的。第二章 B向右移动一下,不是可以么?为什么不可以?
所有矩形坐标固定的。
风吹腚腚凉 2015-03-04
  • 打赏
  • 举报
回复
分数组找线段,比如最上面一条线的,全放一个数组里,左边的也是,一共4个数组,然后遍历数组验证长度是否等于大于总长度。
pig357 2015-03-04
  • 打赏
  • 举报
回复
引用 7 楼 hbu_pig 的回复:
引用 5 楼 EganLi 的回复:
4个矩形首尾相连形成的一个矩形,中间出现镂空,是否算做一个符合要求的矩形?

当然不算啊,就是要判断中间是否有空白部分。



你给的例图里面重叠算,镂空就不算?


EganLi 2015-03-02
  • 打赏
  • 举报
回复
4个矩形首尾相连形成的一个矩形,中间出现镂空,是否算做一个符合要求的矩形?
cnmhx 2015-03-01
  • 打赏
  • 举报
回复
遍历所有矩形的长宽组合的和。逐个验证。
欢乐的小猪 2015-03-01
  • 打赏
  • 举报
回复
找到左上,右上,左下,右下四个点的坐标看看是否构成矩形就可以了吧?
ohmygirl 2015-02-28
  • 打赏
  • 举报
回复
sorry, 没看到有坐标。
ohmygirl 2015-02-28
  • 打赏
  • 举报
回复
这图画的。第二章 B向右移动一下,不是可以么?为什么不可以?

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧