動態規劃之鋼條切割問題 (三)

2021-10-09 12:10:39 字數 643 閱讀 3430

/* 動態規劃之鋼條的切割問題

vector p;

p[i]表示的是i長度的鋼條價值為p[i]

求解將長度為n的鋼條鋸成多少小鋼條才能使得價值最大

此**是動態規劃之鋼條切割問題(一)中**的優化,

使用vectorrem來記住計算過的長度為n鋼條的最大價值

這樣可以避免許多的重複計算

在本**中使用了自底向上的方法 */

#include#includeusing namespace std;

int cut_rod(vectorp,int n,vector& rem)

rem[j] = num;

}return rem[n];

}int main()

;    int len;

cout << "請輸入鋼條的長度" << endl;

cin >> len;

vectorrem(p.size(), -1);

rem[0] = 0;

int num = cut_rod(p, len, rem);

cout << "鋼條切割的最大價值為" << endl;

cout << num;

return 0;

}

動態規劃之鋼條切割問題

鋼條切割方案自底向上 public class cutrodbottom2up public static void main string args private void start private cutrodsolution bottomupcutrod int n crsl.r j q ...

動態規劃 鋼條切割問題

已知鋼條切割的不同長度對應的不同 如下所示 長度i 1 23 45 67 89 10 pi 1589101717202430 求輸入長度,輸出最佳的收益。詳細理論知識見 演算法導論第十五章 p359 書中給出三個演算法 一 自頂向下遞迴實現 缺點 當n足夠大時,時間會 性地增長。偽 cut rod ...

動態規劃 鋼條切割問題

動態規劃與分治法相似,都是通過組合子問題的解來求解原問題。回顧下分治法的原理 它將問題劃分為互不相交的子問題 注意 互不相交 遞迴求解子問題,再將它們的解組合起來,即為原問題的解。但是,動態規劃與分治法不同,有以下幾點 1 對於子問題重疊的情況,分治法則重複求解,不高效。而動態規劃對每個子問題只求解...