大盜潛入博物館,面前有5件寶物,分別有重量和價值,大盜的背包僅能負重20公斤,請問如何選擇寶物,總價值最高?
item | weight | value |
---|---|---|
1 | 2 | 3 |
2 | 3 | 4 |
3 | 4 | 8 |
4 | 5 | 8 |
5 | 6 | 10 |
m(i, W) 表示前i(1<=i<=5)個寶物中,組合不超過W(1<=W<=20) 重量,得到的最大價值。
第 i 件寶物重量 Wi > 背包承重 W, 那么m(i, W) = m(i-1, W);
第 i 件寶物重量 Wi <= 背包承重 W,
m(i, W) = max{m(i-1, W), m(i-1, W-Wi)+vi}
m(5,5) = m(4,5) = max(m(3,5), m(3,0)+8)
, 動態規劃表格如下:# 用一個列表來保存寶物的重量w和價值vtr = [None, {'w':2, 'v':3}, {'w':3, 'v':4}, {'w':4, 'v':8}, {'w':5, 'v':8}, {'w':9, 'v':10}]# 設置背包最大承重max_w = 20# 初始化二維表格m[(i, w)],將表格中所有價值均初始化為0# 表示前i個寶物中,最大重量w的組合,所得到的最大價值# 當i或w為0時,價值為0m = {(i, w):0 for i in range(len(tr)) for w in range(max_w + 1)}# 逐個填寫二維表格# 外層循環為 i個寶物,[1,6)的循環# 內層循環為 重量w,[1, max_w+1)的循環for i in range(1, len(tr)): for w in range(1, max_w + 1): if tr[i]['w'] > w: # 裝不下第i個寶物,即不裝第i個寶物 m[(i, w)] = m[(i-1, w)] else: # 裝得下第i個寶物時,在不裝第i個寶物與裝第i個寶物這兩種情況下,取最大價值 m[(i, w)] = max(m[(i-1, w)], m[(i-1, w-tr[i]['w'])] + tr[i]['v'])# 輸出結果print(m[(len(tr)-1, max_w)])
# 用一個字典來保存寶物的重量w和價值vtr = {(2, 3), (3, 4), (4, 8), (5, 8), (9, 10)}# 設置背包最大承重max_w = 20# 初始化記憶化表格m# key是(寶物組合,最大重量),value是最大價值m = {}def thief(tr, w): if tr == set() or w == 0: # 基本結束條件 m[(tuple(tr), w)] = 0 return 0 elif (tuple(tr), w) in m: return m[(tuple(tr), w)] else: vmax = 0 for t in tr: if t[0] <= w: # 逐個從集合中去掉某個寶物t,遞歸調用 # 選出所有價值中的最大值 v = thief(tr-{t}, w-t[0]) + t[1] # 調用自身 vmax = max(vmax, v) m[(tuple(tr), w)] = vmax return vmax# 輸出結果print(thief(tr, max_w))
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
ps4發售上市時間?國行PS4主機于2014年12月12日零點開啟國內預售,2015年1月11日正式發售。Ps4多少年前出的?八年前,2014年2月22日是PS4在日本發售的日子,而國行的PS4是2015年3月20日發售的。到目前為止,PS4銷量已經超過1.169億臺,足以稱得上流行硬件。PlayStation4是索尼銷售的一款固定家用游戲機,被親切地稱為 "PS4 "被游戲玩家。如序列號所示,...
蘋果手機icloud云服務怎么查看?不使用iPhone蘋果手機的大多數用戶都知道icloud是專門備份和歌詞同步你的設備上信息的作用。另外,iCloud扔給你提供給了聯系人導出來的選項、你也可以將其主要用于備份或者與他人分享分享等。1.不使用任一瀏覽器查看網頁再次進入icloud登錄頁面,再輸入icloud帳號和密碼,登陸賬號到你的iCloud帳戶。2.直接進入個人iCloud帳號,點擊【正在使用...
世界十大危險機場排名世界十大機場最難降落?世界最復雜機場?1、盧卡拉機場盧卡拉機場位于尼泊爾東部的盧卡拉鎮,喜馬拉雅山腹地,被稱為世界屋脊上的跑道。機場跑道很短,只有460米,坡度很大,達到了18.5學位。機場只有06號跑道可以降落,跑道的盡頭是懸崖。如果一次近進失敗,就沒有復飛的可能。此外,由于機場位于高山腹地,氣象條件復雜,亂流眾多,無可爭議地位居世界十大危險機場之首。2、特崗汀機場特崗汀機場...