⑴ 將N個大小不等的矩形不重疊地拼在一個指定的大矩形里(大矩形長寬固定),求使佔用大矩形區域最小的演算法
大矩形圖像為矩陣M(二值圖像)
小矩形長為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
請指教
⑵ 求一個排列演算法,或者解決的思路!若干矩形拼湊成一個矩形,不能重疊,如何排列可以使最終面積最小
1. 計算寬度之和、高度之和,如果寬度和較大則先處理2.1,否則先處理2.2
2.1. 按照寬度從小到大排列,寬度相同的矩形拼成更大的矩形
2.2. 按照高度做相同的處理
3. 重復以上步驟,直到沒有寬、高相同的矩形
1. 計算寬度之和、高度之和,如果寬度和較大則先處理2.1,否則先處理2.2
2.1. 按照寬度從小到大排列,找出兩個矩形,使得拼接後的「矩形」面積中空缺部分最小(較可能是寬度相差較小的兩個矩形)。
2.2. 按照高度做相同的處理
3. 重復以上步驟,直到只剩下一個矩形(最終解)
以上兩段其實是一個意思:盡量用較小的「面積損失」最大限度的減少待處理矩形數。只是第一段是特例,也就是無「面積損失」的拼接。
不過,一般來說,這不會是最優解。