搜索
编程论坛
→
开发语言
→
C++论坛
→
『 VC++/MFC 』
→ 矩形合并
标题:
矩形合并
只看楼主
论坛灌水
来 自:吉林长春
等 级:
新手上路
帖 子:10
专家分:4
注 册:2010-12-20
结帖率:
100%
楼主
已结贴
√
问题点数:20 回复次数:5
矩形合并
已知n(n>3)个矩形以及每个矩形的四个顶点坐标
n个矩形都在x正半轴和y正半轴内
每两个矩形合并后形成一个完全包含这两个矩形的大矩形
一直合并直到剩余3(或以内)个为止
求最后合并出的3个矩形个顶点坐标
要求是 最后三个矩形面积和最小
不用考虑定点坐标太大问题
代码复杂度 最好 小点。。。。。。。。
所有矩形 完全是 有两条边与x轴平行 有两条边与y轴平行 是所有矩形
搜索更多相关主题的帖子:
半轴
最好
2011-04-22 16:24
debroa723
等 级:
贵宾
威 望:
23
帖 子:862
专家分:1954
注 册:2008-10-12
第
2
楼
得分:20
从矩形容器中随机POP两个矩形出来,两个矩形会得到八个X和八个Y ,找出最大X最小X 最大Y最小Y四个值,用这四个数据组全一个新的矩形,左上角点(最小X,最大Y)右上角点(最大X,最大Y)左下角点(最小X,最小Y)右下角点(最大X,最小Y),将新的矩形PUSH入矩形容器中,然后重复前面的步骤至到矩形容器中矩形的个数小于等于3.
以上是可以重复合并的思路,如果要不可重复合并,则将新生成的矩形PUSH到另一个容器中,当前一个容器空时,切换两容器(如果是奇数个,最后一个直接PUSH到另一个容器中),至到数量少于3.可以使用指针来做切换容器的操作。
2011-04-22 22:41
论坛灌水
来 自:吉林长春
等 级:
新手上路
帖 子:10
专家分:4
注 册:2010-12-20
第
3
楼
得分:0
不好意思 你的回复我才看到 先谢谢了 但是你说的是对我也会 我要求的是 脏矩形合并 是怎样合并 到最后面积和最小 是要求这个算法 感觉应该是DP 求一下指点
望回复
2011-04-25 09:33
debroa723
等 级:
贵宾
威 望:
23
帖 子:862
专家分:1954
注 册:2008-10-12
第
4
楼
得分:0
其实可以把合并的过程看成多层的排列组合,你就当是解排列组合,穷举所有合并的可能性,保留面积结果最小的一组排列顺序,
2011-04-25 23:22
论坛灌水
来 自:吉林长春
等 级:
新手上路
帖 子:10
专家分:4
注 册:2010-12-20
第
5
楼
得分:0
对 我就是这么做的 主要问题是 穷举过程 有什么优化算法 这是我想问的?
2011-04-26 09:30
debroa723
等 级:
贵宾
威 望:
23
帖 子:862
专家分:1954
注 册:2008-10-12
第
6
楼
得分:0
优化我认为有两大类,一类是减少CPU运行次数,其实就是在汇编级利用硬件特性去减少CPU指令的执行次数。
一类是算法优化,这是一个不大不小的课题,没仔细去研究过,工作中没有那种特别追求极致效率的要求,建议到网上搜索关于这类问题的好的数学方法,再将数学方法变成代码。这一点可以在网上寻求或是本论坛中有算法达人给出答案。
当然算法优化中还有一个很基础的就是代码结构的优化也可以提高一点效率。
关于优化再多说两句,优化的原则是减少CPU指令执行次数,在这个大原则下,去掉不必要的CPU指令是很必要的,比如尽可能不在循环内声明变量,因为声明变量是要花CPU时间的,也就是说在循环体内尽可能减少内存的分配、访问,将效率都用在CPU内部运行,寄存器、FPU...,。想知道自己的代码是否被优化了,可以在开始和结束的地方获得CPU时钟,计算差值,在同等数值条件下,来评估自己的代码是否优化了,优化了多少。
2011-04-26 20:59
6
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-337571-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.246759 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved