我想實現一個矩形包裝算法。在Java中的矩形包裝
我在我的輸入一些rectanges每個矩形具有heigth和寬度(與一個索引號,所以我將能夠識別它們時我登錄他們)
我有一個矩陣(整數[ ] []),我想將矩形存儲在這個矩陣中。初始化後,矩陣不能被修改,所以它有一個固定的大小。
讓我們來看看和例子,我們有兩個矩形:
new Rectangle(2,3,1) //height=2, width=3, index=1
new Rectangle(1,2,2) //height=1, width=1, index=2
而讓有一個3×3矩陣:
Integer[][] matrix = new Integer[4][3]; //height=4, width=3
我與運行算法完成後,我想看到類似這樣的東西(如果我把這個矩陣打印到system.out中):
1 1 1
1 1 1
2 2 0
0 0 0
前兩行存儲第一個re ctangle(它是2高3寬),我們在第三行找到第二個矩形。 0意味着剩下的空白空間(我們可以在那裏存儲其他矩形)
我無法找到貪婪(或任何)算法的好方法。
我從最大到最小排序矩形。 然後我應該開始存儲矩形:如果矩陣有足夠的空間,我們把它放在那裏,如果沒有,我們嘗試另一個單元。我們繼續每一行,每一個細胞,直到我們找到一個地方。
任何人都可以指向我正確的方向嗎?關於一個好的算法,僞代碼或者我可以用來指出我的出路的描述。
謝謝, 馬克
所以這是一個二維揹包問題。 https://www.coursera.org/learn/discrete-optimization該課程可能會有幫助。正如本書所說:http://www.algorist。com/ – TurnipEntropy
,如果我們「有例子」,那麼「你我是一個人」將不會以任何方式將它們組合在一起,並讓一個3x3矩陣int [4] [3]「:這是爲了笑你是混合的向上!! – gpasch