一家公司購買長鋼條,將其切割成短鋼條**,切割本身沒有成本,長度為i的短鋼條的**為pi。那給定一段長度為n的鋼條和乙個**表pi,求鋼條的切割方案使得收益rn最大。
輸入鋼條的長度n。
輸出獲得的最大收益。
7
18
問題思路:把長度為n的鋼條看做n段長度為1的鋼條,從鋼條的最左端開始的相鄰連線點開始,可以選擇切割或者不切割,故總共的切割方案有2的n-1次方(這是在假設每一小段鋼條不一樣的情況下),實際總的切割方案數可以利用上述的找零思想。現在問題是所有切割方法的最大收益,假設長度為n的鋼條的所有切割方案中最大收益為f[n],則f[n] = max。每次切割就只使用一次。
#include using namespace std;
void max_cut(int dp,int price,int n)
dp[i] = profit;
}}int main(); //必須初始化為0
int price[11] = ;
max_cut(dp,price,n);
cout << dp[n] << endl;
return 0;
}
#include#include#include #include using namespace std;
int pi = ;
int max(int a,int b)
int dp[1000];
int cut_rod(int n)
return max_value;
}int main()
動態規劃之切鋼條
填寫備忘錄表。查詢。從低到高遞迴填寫備忘錄。最初資料,經過幾次抉擇,產生更多資料。public static class dynamicprocess fill notetable.integer notetable new integer 6 notetable 0 0 filltable not...
動態規劃 鋼條切割
一家公司購買長鋼條,將其切割成短鋼條 切割本身沒有成本,長度為i的短鋼條的 為pi。那給定一段長度為n的鋼條和乙個 表pi,求鋼條的切割方案使得收益rn最大。如乙個pi如下 長度i12 3456 78910 pi15 891017 1720 2430 在距離鋼條左端i長度處,我們總是可以選擇切割或者...
動態規劃 鋼條切割
這是演算法導論動態規劃的乙個例子,自己實現了一下 給定乙個長度為n英吋的鋼條和乙個 表pi i 1,2 n 求切割鋼條方案,使得銷售收益rn最大。注意,如果長度為n的鋼條 pn足夠大,則最優解可能就不需要切割。分析 如下 include include include using namespace...