動態規劃——背包問題__演算法設計

來源:互聯網
上載者:User
01背包問題 01背包問題的狀態轉換方程 f[i,j] = Max{ f[i-1,j-Wi]+Pi( j >= Wi ),  f[i-1,j] } f[i,j]表示在前i件物品中選擇若干件放在承重為 j 的背包中,可以取得的最大價值。 Pi表示第i件物品的價值。 決策:為了背包中物品總價值最大化,(如果第i件物品放得下的話)第 i件物品應該放入背包中嗎 。 (當然,如果放不下,那就只能選擇不放了)
題目描述: 有編號分別為a,b,c,d,e的五件物品,它們的重量分別是2,2,6,5,4,它們的價值分別是6,3,5,4,6,現在給你個承重為10的背包,如何讓背包裡裝入的物品具有最大的價值總和。

只要你能通過找規律手工填寫出上面這張表就算理解了01背包的動態規划算法。 (如果是第一次學01背包,請務嘗試必手寫這張表) 首先要明確這張表是至底向上,從左至右產生的。 為了敘述方便,用e2儲存格表示e行2列的儲存格,這個儲存格的意義是用來表示只有物品e時,有個承重為2的背包,那麼這個背包的最大價值是0,因為e物品的重量是4,背封裝不了。 對於d2儲存格,表示只有物品e,d時,承重為2的背包,所能裝入的最大價值,仍然是0,因為物品e,d都不是這個背包能裝的。(這個就是在迴圈中的一個判斷(if(v[i]<=j))) 同理,c2=0,b2=3,a2=6。 對於承重為8的背包,a8=15,是怎麼得出的呢。 根據01背包的狀態轉換方程,需要考察兩個值,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.