私は宿題の問題を抱えており、それをしばらくの間理解しようとしてきましたが、一生解決することはできません。
サイズ X*Y のシートと、それより小さいサイズのパターンのセットがあり、それらに価格値が関連付けられています。シートを水平または垂直にカットできます。シートから最大の利益を得るには、最適化されたカット パターンを見つける必要があります。
私が知る限り、(X*Y)(X+Y+#ofPatterns) 再帰操作が必要です。複雑さは指数関数的であると想定されています。誰かが理由を説明してもらえますか?
私が思いついた疑似コードは次のとおりです。
Optimize( w, h ) {
best_price = 0
for(Pattern p : all patterns) {
if ( p fits into this piece of cloth && p’s price > best price) {best_price = p’s price}
}
for (i = 1…n){
L= Optimize( i, h );
R= Optimize( w-i, h);
if (L_price + R_price > best_price) { update best_price}
}
for (i = 1…n){
T= Optimize( w, i );
B= Optimize( w, h-i);
if (T_price + B_price > best_price) { update best_price}
}
return best_price;
}