最大化投資回報問題的實現(xiàn)
最大化投資回報問題:某人有一定的資金用來購買不同面額的債卷,不同面額債卷的年收益是不同的,求給定資金,年限以及債卷面額、收益的情況下怎樣購買才能使此人獲得最大投資回報。
程序輸入約定:第一行第一列表示資金(1000的倍數(shù))總量,第二列表示投資年限;第二行表示債卷面額總數(shù);從第三行開始每行表示一種債卷,占用兩列,前一列表示債卷面額,后一列表示其年收益,如下輸入實例,
10000 1
2
4000 400
3000 250
程序?qū)崿F(xiàn)如下,注釋幾乎說明了一切,所以不再另外分析。
/// 此數(shù)組是算法的關(guān)鍵存儲結(jié)構(gòu),用來存儲不同階段各種債卷
/// 組合下對應(yīng)可獲取的最大利息。
int saifa[80005];
/// 此函數(shù)用于計算當(dāng)前債卷在不同購買額下的最優(yōu)利息情況,
/// 注意此時的利息情況是基于上一次債卷的情況下計算得到的,
/// 也就是說當(dāng)前利息最優(yōu)是基于上一次利息最優(yōu)的基礎(chǔ)上計算出來的,
/// 這也正好體現(xiàn)了動態(tài)規(guī)劃中“最優(yōu)化原則”:不管前面的策略如何,
/// 此后的決策必須是基于當(dāng)前狀態(tài)(由上一次決策產(chǎn)生)的最優(yōu)決策。
/*
動態(tài)規(guī)劃的求解過程一般都可以用一個最優(yōu)決策表來描述,
對于本程序,以示例輸入為例,對于第一年,其最優(yōu)決策表如下:
0 1 2 3 4 5 6 7 8 9 10(*1000) -- (1)
0 0 0 0 400 400 400 400 800 800 800 -- (2)
0 0 0 250 400 400 500 650 800 900 900 -- (3)
(1) -- 表示首先選利息為400的債卷在對應(yīng)資金下的最優(yōu)利息。
(2) -- 表示可用來購買債卷的資金。
(3) -- 表示在已有狀態(tài)下再選擇利息為300的債卷在對應(yīng)資金下的最優(yōu)利息。
注意上面表格,在求購買利息為300的債卷獲得的最優(yōu)收益的時候,
參考了以前的最優(yōu)狀態(tài),以3行8列的650為例,7(*1000)可以
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |