2016-11-10 43 views
-1

我想實現一個矩形包裝算法。在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意味着剩下的空白空間(我們可以在那裏存儲其他矩形)

我無法找到貪婪(或任何)算法的好方法。

我從最大到最小排序矩形。 然後我應該開始存儲矩形:如果矩陣有足夠的空間,我們把它放在那裏,如果沒有,我們嘗試另一個單元。我們繼續每一行,每一個細胞,直到我們找到一個地方。

任何人都可以指向我正確的方向嗎?關於一個好的算法,僞代碼或者我可以用來指出我的出路的描述。

謝謝, 馬克

+0

所以這是一個二維揹包問題。 https://www.coursera.org/learn/discrete-optimization該課程可能會有幫助。正如本書所說:http://www.algorist。com/ – TurnipEntropy

+0

,如果我們「有例子」,那麼「你我是一個人」將不會以任何方式將它們組合在一起,並讓一個3x3矩陣int [4] [3]「:這是爲了笑你是混合的向上!! – gpasch

回答

0

你想在一個矩陣,以「畫」的矩形,和你有矩形已經按大小排序。

可以/應該做一個循環是:

  • 獲取矩形的大小(取決於,如果它是由構造提供)
  • 檢查是否存在在矩陣矩形足夠的空間;
  • 繪製(用於或while循環繪製)。

使用matrix[0].lengthmatrix.length獲得其矩陣大小和比較的矩形。

我認爲最大的挑戰就是不要迷失在這些變數中。您需要繼續關注您需要開始繪製的行數以及何時停止並更新該變量。