日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python背包问题并行_背包问题九讲python3实现

發布時間:2024/8/1 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python背包问题并行_背包问题九讲python3实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背包九講是動態規劃思想的經典呈現,找了許久沒有完整的python3實現,趁機總結一下。

1、0-1背包問題

二維DP數組解法:

# n, v分別代表物品數量,背包容積

n, v = map(int, input().split())

# w為物品價值,c為物品體積(花費)

w, cost = [0], [0]

for i in range(n):

cur_c, cur_w = map(int, input().split())

w.append(cur_w)

cost.append(cur_c)

#該初始化代表背包不一定要裝滿

dp = [[0 for j in range(v+1)] for i in range(n+1)]

for i in range(1, n+1):

for j in range(1, v+1): #可優化成 for j in range(cost[i], v+1):

if j < cost[i]:

dp[i][j] = dp[i-1][j]

else:

dp[i][j] = max(dp[i-1][j], dp[i-1][j-cost[i]]+w[i])

print(dp[n][v])

時間復雜度:O(VN),不能再優化,但對空間復雜度可以進行優化,使用一維數組。

一維DP數組解法:

# n, v分別代表物品數量,背包容積

n, v = map(int, input().split())

# w為物品價值,c為物品體積(花費)

w, cost = [0], [0]

for i in range(n):

cur_c, cur_w = map(int, input().split())

w.append(cur_w)

cost.append(cur_c)

#該初始化代表背包不一定要裝滿

dp = [0 for j in range(v+1)]

for i in range(1, n+1):

#注意:第二層循環要逆序循環

for j in range(v, 0, -1): #可優化成 for j in range(v, cost[i]-1, -1):

if j >= cost[i]:

dp[j] = max(dp[j], dp[j-cost[i]]+w[i])

print(dp[v])

值得注意的是:第二層循環中對背包容量 V 要逆序遍歷,保證 dp[j-cost[i]] 是絕對不包含當前物品的選擇。參考《背包九講》

2、完全背包問題

一維DP數組解法:

只需要基于 0-1背包問題 的一維DP解法修改一行代碼即可!!!

# n, v分別代表物品數量,背包容積

n, v = map(int, input().split())

# w為物品價值,c為物品體積(花費)

w, cost = [0], [0]

for i in range(n):

cur_c, cur_w = map(int, input().split())

w.append(cur_w)

cost.append(cur_c)

#該初始化代表背包不一定要裝滿

dp = [0 for j in range(v+1)]

for i in range(1, n+1):

#只需要將0-1背包一維DP解法中的二層循環改為順序循環

for j in range(1, v+1):

if j >= cost[i]:

dp[j] = max(dp[j], dp[j-cost[i]]+w[i])

print(dp[v])

時間復雜度:O(VN)

為什么順序遍歷就能解決問題?

對于當前物品 i ,要么不拿為dp[j],要么拿為dp[j-cost[i]]+w[i],而dp[j-cost[i]]代表之前的狀態中,也包含拿過物品 i 的狀態,這樣就包含了多次拿取物品 i 的情況。

優化:

3、多重背包問題

最直接的解法:

將每件物品的件數 Mi 作為獨立的物品,這樣時間復雜度為O(V sum(Mi))

# n, v分別代表物品數量,背包容積

n, v = map(int, input().split())

# w為物品價值,c為物品體積(花費)

w, cost, s = [0], [0], [0]

for i in range(n):

cur_c, cur_w,cur_s= map(int, input().split())

w += [cur_w]*cur_s

cost += [cur_c]*cur_s

n = len(w)-1

#該初始化代表背包不一定要裝滿

dp = [0 for j in range(v+1)]

for i in range(1, n+1):

for j in range(v, cost[i]-1, -1):

if j >= cost[i]:

dp[j] = max(dp[j], dp[j-cost[i]]+w[i])

print(dp[v])

優化:

class Solution:

# 0-1背包問題的寫法

def max_value(self, n, m, v, w):

dp = [0] * (m + 1)

for i in range(1, n + 1):

for j in range(m, v[i] - 1, -1):

dp[j] = max(dp[j], dp[j - v[i]] + w[i])

return dp[-1]

if __name__ == '__main__':

import sys

n, m = map(int, input().split())

lines = sys.stdin.readlines()

v, w = [0], [0]

n = 0

for line in lines:

line = list(map(int, line.split()))

k = 1

while k <= line[2]: # 假設line[2]=13,k取1,2,4之后,line[2] = 6 < k = 8 退出循環

v.append(k * line[0])

w.append(k * line[1])

line[2] -= k

k *= 2

n += 1 # 物品總數加1

if line[2]:

v.append(line[2] * line[0])

w.append(line[2] * line[1])

n += 1

print(Solution().max_value(n, m, v, w))

作者:polaris

鏈接:https://www.acwing.com/solution/acwing/content/3988/

總結

以上是生活随笔為你收集整理的python背包问题并行_背包问题九讲python3实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲制服丝袜一区 | 欧美在线中文字幕 | 久久精品丝袜高跟鞋 | 国产视频二区三区 | 日韩欧美性视频 | 日韩一级黄 | 丰满人妻一区二区三区53 | 美女免费黄色 | 亚洲福利午夜 | 黑人精品无码一区二区三区AV | 高清国产一区二区 | 国产精品毛片一区二区在线看 | 超碰精品在线观看 | 中国女人和老外的毛片 | 国产精品中文在线 | 黄色一级免费大片 | 韩国一区二区三区视频 | wwwav视频 | 亚洲性图一区二区三区 | 免费无遮挡无码永久在线观看视频 | 热热热热色| 精品一区二区三区国产 | 性色一区二区 | av综合站 | 潘金莲一级淫片aaaaaa播放 | 51热门大瓜今日大瓜 | 五月综合色 | 欧美精品三区 | 草草视频在线观看 | 午夜爱爱免费视频 | 电影中文字幕 | 最污的网站 | 91av视频| 中文字幕一区二区三区在线观看 | 久久99久久久久 | www久久久久久 | 欧美另类极品videosbest使用方法 | 91精品国产欧美一区二区 | 女警白嫩翘臀呻吟迎合 | 亚洲精品乱码久久久久久蜜桃麻豆 | 成年免费视频黄网站在线观看 | 亚洲精品第五页 | 97视频在线 | 黄色成人小视频 | 校霸被c到爽夹震蛋上课高潮 | 欧美亚洲精品在线观看 | 夜夜艹 | 精品久久久久久久久久久aⅴ | 国产激情无码一区二区三区 | 日韩黄色在线 | 中文资源在线播放 | 亚洲第3页 | 日韩毛片儿| 色综合av综合无码综合网站 | 精品一区二区三区免费视频 | 一区二区三区在线视频观看 | 性色网站 | 韩日毛片| 日韩h在线观看 | a级免费视频 | 亚洲免费av网站 | 成人av福利| 97精品熟女少妇一区二区三区 | 欧美三极片| 欧美另类videos | 91国产在线播放 | 日韩福利一区二区三区 | 亚洲欧美日本一区 | 天天躁日日躁狠狠躁伊人 | 日韩视频在线播放 | 日韩欧美一 | 天天看天天爽 | 国产素人av | 国产 欧美 日韩 | 自拍视频在线播放 | 欧美两根一起进3p做受视频 | 亚洲福利小视频 | av2018| 李丽珍毛片 | 欧美午夜影院 | 亚洲黄v | 欧美高清一区 | 97在线播放免费观看 | 色综合天天综合网国产成人网 | 亚洲bb | 国产高清视频在线观看 | 精品视频www| 久久午夜精品人妻一区二区三区 | 午夜久久久久久噜噜噜噜 | 最新av免费在线观看 | 6080福利| 曰韩精品| 一区二区三区免费在线 | 极品美妇后花庭翘臀娇吟小说 | 西比尔在线观看完整视频高清 | 蜜桃久久久 | 草久久久久 | 日日操夜夜爱 | 日本精品一区二区在线观看 |