一块长方形的大布料截取若干个小的长方形布料,小长方形布料不能旋转,怎么使组成的不规则图形的长度最小?

大的长方体布料的的宽是固定不变的,长度不限,小的长方体布料不能旋转,长宽高固定,但不一致,请问怎么排版,剩余的大的长方体能够截取的新的长方体最大。

如图,所示3个红色框子表示需要从大的长方体布料中中截取出来的小长方体布料(会有多个,会排两三排这种),怎么排版,能够使蓝色框子中的长方体最大,也是就怎么让剩余没有截过的布料最大,求大佬帮忙看下,提供下思路

举个例子:7个小长方形填充到大的长方形里面,有多种排列方法,举例 a,b两种,希望得到B这种排列方式,这样截取的布料的长度最小

网上找到一个大佬相似的回答,但是不知道怎么转成java或者js代码,请大家帮我看下

将N个大小不等的矩形不重叠地拼在一个指定的大矩形里(大矩形长宽固定),求使占用大矩形区域最小的算法

解题思路如下:
小矩形长为a1,a2……an
宽为b1,b2,……bn
所有常量(长和宽)放到一个数列A中,按大小排序;
设置大矩形图像起始点O1(0,0)
if A不为空,then 循环

如其中(A中元素)最大的是bi,从数列中删除bi和ai;
O1点删除bi*ai区域(矩阵数值归零),剩余部分生成两个或多个矩形。长宽分别为c1,c2……d1,d2……放到数列B中,按大小排序;
找出B中最小值ci加入数列A排序。O定为ci对应点。
在A中取小于ci的最大常量;从A删除ci;

输出矩阵M

以上是 一块长方形的大布料截取若干个小的长方形布料,小长方形布料不能旋转,怎么使组成的不规则图形的长度最小? 的全部内容, 来源链接: utcz.com/p/944955.html

回到顶部