最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃背包問題

 更新時(shí)間:2020年12月31日 09:31:08   作者:Take your time_  
這篇文章主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃背包問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一個(gè)包可以背4kg的東西,現(xiàn)在有四件東西,重量分別為1kg,4kg,3kg,1kg,價(jià)值為:1500,3000,2000,2000;

現(xiàn)在要求你,在包里背的東西價(jià)值最大,但是不能超過背包的最大載重量

#幾件物品的重量
w = [0,1,4,3,1]
#幾件物品的價(jià)值
v= [0, 1500, 3000, 2000, 2000]
#物品數(shù)量
n = len(w) - 1
#包的載重量
m = 4
 
#建立一個(gè)列表表示在包中的物品,元素是True時(shí)代表對(duì)應(yīng)元素放入
x = [] 
#放入包中的總價(jià)值
value = 0
#建立一個(gè)矩陣,來表示在前i個(gè)物品中,當(dāng)載重量是j時(shí),放入包中的最大價(jià)值,table[i][j]
table = [[0 for i in range(m+1)] for j in range(n+1)]
 
def dynamic(w,v,n,m,x):
 #計(jì)算table矩陣
 for i in range(1, n+1): #代表物品一件一件的考慮
  for j in range(1, m+1):  #代表子背包的大小一點(diǎn)一點(diǎn)的考慮
   if (j >= w[i]): #當(dāng)背包的大小大于物品的重量時(shí),考慮放進(jìn)去
    table[i][j] = max(table[i-1][j], table[i-1][j-w[i]] + v[i])
   else:
    table[i][j] = table[i -1][j] #如果放不進(jìn)去,就繼承之前的價(jià)值
    
 #遞推裝入背包中的物體,尋找跳變的地方,從最后結(jié)果開始逆推
 j = m
 for i in range(n, 0, -1):
  if table[i][j] > table[i- 1][j]: #如果多加一件物品之后,價(jià)值增大,就將這一件物品加入列表中
   x.append(i)
   j = j - w[i] #此時(shí)為剩余背包的載重量
   
 #返回最大價(jià)值,即表格中最后一行最后一列的值
 value = table[n][m]
 return value
 
print("最大價(jià)值為:", str(dynamic(w, v, n, m, x)))
print("物品的索引:", x)

PS:python動(dòng)態(tài)規(guī)劃之背包問題

import numpy as np
def bag(weight,values,weight_cont):
 num = len(weight)
 weight.insert(0,0)
 values.insert(0,0)
 bag = np.zeros((num+1,weight_cont+1),dtype=np.int)
 for i in range(1,num+1):
  for j in range(1,weight_cont+1):
   if j >= weight[i]:
    bag[i][j] = max(bag[i-1][j],bag[i-1][j-weight[i]]+values[i])
   else:
    bag[i][j] = bag[i][j-1]
 return bag[-1][-1]
if __name__ == '__main__':
 weight = [1, 2, 4, 10, 12]
 values = [1200, 1500, 2000, 1300, 2500]
 weight_cont = 20
 re = bag(weight,values,weight_cont)
 print(re)

到此這篇關(guān)于python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃背包問題的文章就介紹到這了,更多相關(guān)python動(dòng)態(tài)規(guī)劃背包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析python 動(dòng)態(tài)庫m.so.1.0錯(cuò)誤問題

    淺析python 動(dòng)態(tài)庫m.so.1.0錯(cuò)誤問題

    這篇文章主要介紹了python 動(dòng)態(tài)庫m.so.1.0錯(cuò)誤問題,文中給大家提到了python中使用動(dòng)態(tài)庫的方法,通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • flask開啟多線程的具體方法

    flask開啟多線程的具體方法

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于flask開啟多線程的具體方法,對(duì)此有需求的可以學(xué)習(xí)參考下。
    2020-08-08
  • 用Python寫腳本,實(shí)現(xiàn)完全備份和增量備份的示例

    用Python寫腳本,實(shí)現(xiàn)完全備份和增量備份的示例

    下面小編就為大家分享一篇用Python寫腳本,實(shí)現(xiàn)完全備份和增量備份的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python利用pandas進(jìn)行數(shù)據(jù)合并詳解

    Python利用pandas進(jìn)行數(shù)據(jù)合并詳解

    當(dāng)使用Python中的pandas庫時(shí),merge函數(shù)是用于合并(或連接)兩個(gè)數(shù)據(jù)框(DataFrame)的重要工具。它類似于SQL中的JOIN操作,下面我們就來看看它的具體操作吧
    2023-11-11
  • Python中方法的缺省參數(shù)問題解讀

    Python中方法的缺省參數(shù)問題解讀

    這篇文章主要介紹了Python中方法的缺省參數(shù)問題解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python實(shí)現(xiàn)的計(jì)數(shù)排序算法示例

    Python實(shí)現(xiàn)的計(jì)數(shù)排序算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的計(jì)數(shù)排序算法,簡(jiǎn)單描述了計(jì)數(shù)排序的算法原理并結(jié)合具體實(shí)例形式分析了Python計(jì)數(shù)排序的相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-11-11
  • Python中的Networkx的基本使用

    Python中的Networkx的基本使用

    Networkx是一個(gè)Python的包,可以用來創(chuàng)建和處理復(fù)雜的圖網(wǎng)絡(luò)結(jié)構(gòu),這篇文章主要介紹了Python中的Networkx詳解,需要的朋友可以參考下
    2023-02-02
  • Python + Flask 實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼系統(tǒng)

    Python + Flask 實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼系統(tǒng)

    這篇文章主要介紹了Python + Flask 制作一個(gè)簡(jiǎn)單的驗(yàn)證碼系統(tǒng),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析

    Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析

    這篇文章主要介紹了Python中的浮點(diǎn)數(shù)原理與運(yùn)算分析,結(jié)合實(shí)例形式分析了Python浮點(diǎn)數(shù)操作的常見錯(cuò)誤,并簡(jiǎn)單解釋了浮點(diǎn)數(shù)運(yùn)算的原理與比較運(yùn)算實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-10-10
  • python 按照固定長(zhǎng)度分割字符串的方法小結(jié)

    python 按照固定長(zhǎng)度分割字符串的方法小結(jié)

    這篇文章主要介紹了借助python腳本,可以輕松實(shí)現(xiàn),原理就是:字符串的按照固定長(zhǎng)度拆分
    2018-04-04

最新評(píng)論

铅山县| 渝中区| 阿拉善左旗| 菏泽市| 宁德市| 乃东县| 定襄县| 玉树县| 仪陇县| 玛多县| 阿克陶县| 垦利县| 衡阳县| 佛坪县| 左云县| 曲阳县| 亚东县| 碌曲县| 西宁市| 临桂县| 合肥市| 南召县| 河东区| 洛浦县| 东光县| 华容县| 岳西县| 高台县| 雷州市| 龙江县| 潼关县| 鹿邑县| 达孜县| 永新县| 墨玉县| 霸州市| 昆山市| 江口县| 盘山县| 南靖县| 山丹县|