ADT - DP(動態規劃)
阿新 • • 發佈:2017-12-28
urn ++ public post ott 學習 sizeof 不同 tor
鋼材分段問題
#include<iostream> #include<vector> using namespace std; class Solution { public: int Bottom_To_Up_Cut_Rod(vector<int> p, int n) { vector<int> r(n); r[0] = 0; int q = -65533; for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { q = q > (p[j] + r[i - j]) ? q : (p[j] + r[i - j]); } r[i] = q; } return r[n]; } }; int main() { int nums[] = {0, 1, 5, 8, 9, 10, 17, 17, 20, 24, 30}; int len = (int)sizeof(nums)/sizeof(int); vector<int> p(len); Solution so; for(int i = 0; i < len; i++) { p[i] = nums[i]; } cout << "請輸入鋼材的長度:"; cin >> len; cout << "最大收益為:" << so.Bottom_To_Up_Cut_Rod(p, len) << endl; return 0; }
上面代碼中的 nums[] 中的數據代表的含義是指鋼材長度從0~10不同長度的價格。
一般動態規劃用於求解一類最優解(一般可歸類為求解最大值或最小值)的問題,這裏以《算法導論》給的這個例子為引子作為深入對算法等的學習。代碼很簡潔明了,所以我就不多解釋了。
ADT - DP(動態規劃)