社区
数据结构与算法
帖子详情
求算法:切割矩形问题
cmckliao3
2008-04-13 01:30:31
切割矩形
[题目描述]
把一个a*b 矩形切割成尽量少的正方形。每次可以选择一个矩形,沿着水平
或者垂直线把它切成两部分(不能转弯)。
[输入] incise.in
两个整数a, b(1<=a,b<=100)
[输出] incise.out
最少的正方形个数
[样例输入]
5 6
[样例输出]
5
...全文
1068
12
打赏
收藏
求算法:切割矩形问题
切割矩形 [题目描述] 把一个a*b 矩形切割成尽量少的正方形。每次可以选择一个矩形,沿着水平 或者垂直线把它切成两部分(不能转弯)。 [输入] incise.in 两个整数a, b(1<=a,b<=100) [输出] incise.out 最少的正方形个数 [样例输入] 5 6 [样例输出] 5
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zxqwin74
2011-11-05
打赏
举报
回复
http://blog.csdn.net/zxqwin74/article/details/6933562
深度抽象
2011-10-29
打赏
举报
回复
数学可以解决,我曾经见到过这样的问题,应该叫 最小覆盖
AndyZhang
2011-10-27
打赏
举报
回复
这个需要学习啊
dragon37ng
2011-10-24
打赏
举报
回复
[Quote=引用 1 楼 c1053710211 的回复:]
动态规划应该可以解决
对于一个边长为m,n的长方形,d[m,n]是目标函数
那么d[m,n]=min(d[m-p,n]+d[p,n],d[m,n-l]+d[m,l]) 0<p<m,0<l<n
不过时间复杂度好像....
提供个思路,占个沙发,等其他人解决
[/Quote]
这个状态方程就相当与把每种情况都讨论了一下,跟搜索有什么区别?
会超时么?貌似要顺序,能逆推么。。。我是沙茶,求神牛详细讲解下 。。。
UltraBejing
2008-05-01
打赏
举报
回复
有问题请先GOOGLE,BAIDU
meiZiNick
2008-05-01
打赏
举报
回复
支持搂主,收藏
大王派我去巡山
2008-04-15
打赏
举报
回复
精确一些.状态值共有O(m*n)个,每次状态转移的时候计算量<(m+n)
因此整体的复杂度是O(m*n*(m+n)),不超过两百万次。
大王派我去巡山
2008-04-15
打赏
举报
回复
说的是,贪心策略并不合适,应该是动态规划!
状态转移方程是 d[m,n]=min(d[m-p,n]+d[p,n],d[m,n-l]+d[m,l]) 0<p<m,0<l<n 没错
C1053710211
2008-04-15
打赏
举报
回复
to dlyme
如果是贪心的话,对于给出的例子6,5,这样分割
(6,5)->(5,5)+(5,1)->(5,5)+5*(1,1)是六个正方形
但是可以
(6,5)->(6,3)+(6,2)->2*(3,3)+3*(2,2)是5个正方形
所以贪心不是最优解,
这个题虽然用动态规划是O(n^2*m^2),的时间复杂度,
但是m,n都是小于100的数,应该可以容忍时间上的缺陷。
p0303230
2008-04-14
打赏
举报
回复
[Quote=引用 2 楼 dlyme 的回复:]
贪心算法:
如果a==b,那已经是满足要求的矩形,不用再切;
否则的话(假设a>b),则切成b*b和(a-b)*b两块;
如果(a-b)*b不是矩形,按照同样的办法切下去...
[/Quote]
大王派我去巡山
2008-04-14
打赏
举报
回复
贪心算法:
如果a==b,那已经是满足要求的矩形,不用再切;
否则的话(假设a>b),则切成b*b和(a-b)*b两块;
如果(a-b)*b不是矩形,按照同样的办法切下去...
C1053710211
2008-04-13
打赏
举报
回复
动态规划应该可以解决
对于一个边长为m,n的长方形,d[m,n]是目标函数
那么d[m,n]=min(d[m-p,n]+d[p,n],d[m,n-l]+d[m,l]) 0<p<m,0<l<n
不过时间复杂度好像....
提供个思路,占个沙发,等其他人解决
【蓝桥杯2019Java】
求
和、矩阵
切割
、质数
本文探讨了两个有趣的
算法
问题
:一个是
求
特定条件下的整数和,另一个是使用辗转相除法解决矩阵
切割
问题
,旨在从给定的
矩形
材料中
切割
出尽可能多的正方形。
CodeForces 527C. Glass Carving (SBT/线段树/std::set)
本文介绍了一种
算法
问题
——多次
切割
求
最大
矩形
面积的解决方法,包括线段树、SBT(Size Balanced Tree)及std::set三种实现方式,并对比了它们的空间占用和运行时间。
CodeForces 527C. Glass Carving (SBT,线段树,set,最长连续0)
本文探讨了在给定
矩形
上进行多次
切割
后
求
最大
矩形
面积的
问题
,提出了使用线段树、SBT和std::set三种
算法
实现方案,并对比了它们的时间复杂度和空间占用。
hdu 5640 King's Cake(模拟)
本文介绍了一个有趣的数学
问题
:国王如何将一个
矩形
蛋糕通过特定方式
切割
成尽可能多的正方形蛋糕。文章提供了一段C++代码实现,该
算法
类似于
求
最大公约数的过程,通过不断减少较短的一边直至两边长度相等。
算法
学习之——
矩形
切割
思想
本文介绍了如何使用
矩形
切割
算法
解决在一张宽为A、长为B的白纸上放置N个不同颜色长方形的
问题
。每个长方形的边与纸的边缘平行,确保它们完全在纸内,形成各种形状和颜色的组合。输入包含长方形的坐标信息,输出要
求
列出每个颜色及其对应的可见区域总面积。给出了三种解法,包括二维线段树和
矩形
树,但重点讲解了
矩形
切割
算法
的应用。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章