C++經(jīng)典算法問題:背包問題(迭代+遞歸算法)!含源碼示例
2021-10-05 19:00 作者:C語言編程__Plus | 我要投稿

問題說明
有N件物品和一個(gè)容量為V的背包。
第i件物品的重量是w[i],價(jià)值是v[i]。
求解將哪些物品裝入背包可使這些物品的重量總和不超過背包容量,
且價(jià)值總和最大。
功能說明
本程序用動(dòng)態(tài)規(guī)劃的思想解決了背包問題,并用了兩種算法: 迭代法、遞歸法。在迭代法中實(shí)現(xiàn)了打印背包問題的表格。
代碼簡(jiǎn)述
通過用戶輸入數(shù)據(jù),程序輸入檢測(cè),動(dòng)態(tài)分配空間,選擇算法, 用動(dòng)態(tài)規(guī)劃的思想求解背包問題。
迭代法:
通過遍歷n行W列,迭代每行每列的值,并把最優(yōu)解放到 n行(在數(shù)組中為第n+1行)W列(在數(shù)組中為第W+1列)中。
遞歸法:
通過每次返回前i個(gè)物品和承重為j的最優(yōu)解, 遞歸計(jì)算總背包問題的最優(yōu)解。
源碼示例
今天的分享就到這里了,大家要好好學(xué)C++喲~
寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
微信公眾號(hào):C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

標(biāo)簽: