子問題定義:定義p[i][j]為布料寬為i,高為j的最優產出,每次剪下一塊布料,剩餘布料最多形成三塊矩陣面料。每次剪裁會有兩種情況,水平切割布料,其次是將布料旋轉90度後在切割布料。
遞迴關係:
初值設定:
p[0][h]=0
p[w][0]=0
求解順序:
依次求解二維陣列p的每一行,每一列,最終的結果為p[布料的寬][布料的高]
1view codepackage
org.xiu68.ch6.ex8;23
public
class
ex6_14 ;
14 tailor(10,10,cloths); //
生產出的產品最**為: 10
15 tailor(40,40,cloths); //
生產出的產品最**為: 160
1617 clothing cloths2=new
clothing;
24 tailor(10,10,cloths2); //
生產出的產品最**為: 11
25 tailor(40,40,cloths2); //
生產出的產品最**為: 18026}
2728
/*29
* w:布料的寬
30* h:布料的高
31* cloths:服裝產品
32* 一塊布切割後,最多剩下3塊
33*/
34public
static
void tailor(int w,int
h,clothing cloths)else
6465 }//
for3
66 }//
for2
67 }//
for1
68 system.out.println("生產出的產品最**為: "+p[w][h]);69}
70}7172
//服裝
73class
clothing
84 }