码迷,mamicode.com
首页 > 其他好文 > 详细

四个长宽已知的长方形能否拼成大长方形

时间:2015-11-16 14:06:36      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

 

简化问题 :

四个长方形长宽都已知, 四个面积 S1, S2, S3, S4 已知, 总面积 S = S1 + S2 + S3 + S4 已知

于是枚举长边为length, 宽为width = S / length, 问题转化为, 这四个长方形能否塞进 length * width 的长方形中?

规定小长方形的 l > w, 大长方形的 length > width

 

1. 如果问一个长宽已知的长方形, 问能否正好(不留空)放入length * width的长方形中, 只要长边 == length, 短边 == width 即可

2. 如果问两个长宽已知的长方形, 如果能放入, 那么必然有一个长方形的 长 / 宽 正好和大长方形的一边相等, 剩下一个长方形和剩余部分(也是长方形), 进入1的匹配

3. 如果问三个长宽已知的长方形, 如果能放入, 那么必然有一个长方形 长 / 宽 正好和大长方形的一边相等, 剩下二个长方形和剩余部分进入2的匹配

4. 可以看出这已经转化为一个递归问题了, 如果给4个? 我们希望先放一个长方形之后转化为问题3

    先放入长边最长的长方形, 用来和大长方形的length匹配, 此时会出现2种情况  

  一.  l == length, 大长方形剩下一块和三个小长方形匹配, 转化为问题3

  二.  l < length, 留下一个不规则的图形, 对这个图形进行分解, 分为3块, S1, S2, S3

   技术分享

   随便试试就可以发现, 剩下的S1 和 S2, 必然能和3个长方形其中之一匹配, 枚举匹配后, 转化为问题2

 

于是放4个就解决了...

四个长宽已知的长方形能否拼成大长方形

标签:

原文地址:http://www.cnblogs.com/Quinte/p/4968668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!