動態規劃 揹包問題

2021-09-30 00:21:29 字數 2295 閱讀 5265

揹包容量為9,在揹包可承受範圍內,攜帶價值更高的物品。並列出背那些物品

物品重量價值2

5445

632

class

solution()

:def

__init__

(self, w, v, num)

: self.res_table =[[

0for i in

range

(num +1)

]for i in

range

(len

(w)+1)

] self.w = w

self.v = v

self.num = num

self.res =

defsolve

(self)

:for i in

range(1

,len

(self.res_table)):

for j in

range

(len

(self.res_table[0]

)):if j >= self.w[i -1]

: self.res_table[i]

[j]=

max(self.res_table[i -1]

[j],

self.res_table[i -1]

[j - self.w[i -1]

]+ self.v[i -1]

)else

: self.res_table[i]

[j]= self.res_table[i -1]

[j]return self.res_table[

len(self.w)

][self.num]

defres_choice

(self)

:"""

回溯演算法

:return:返回揹包內容,用陣列體現,0代表沒有裝,1代表裝了

"""res = self.res_table[

len(self.w)

][self.num]

for i in

range

(len

(self.res_table)):

for j in

range

(len

(self.res_table[0]

)):if self.res_table[i]

[j]==res:

self.fun(i,j,res,[0

for i in

range

(len

(w))])

return self.res

deffun(self,i,j,num,res)

:if self.v[i-1]

== num:

# 結束條件

res[i-1]

=1if res not

in self.res:

return

if num == self.res_table[i -1]

[j]:

# 第一種情況

temp_res = res.copy(

) self.fun(i-

1,j,num,temp_res)

if num == self.res_table[i -1]

[j - self.w[i -1]

]+ self.v[i -1]

:# 第二種情況

temp_res = res.copy(

) temp_res[i-1]

=1self.fun(i-

1,j - self.w[i -1]

,num-self.v[i -1]

,temp_res)

if __name__ ==

'__main__'

: w =[2

,4,5

,3] v =[5

,4,6

,2] num =

9 my_solution = solution(w, v, num)

print

(my_solution.solve())

print

(my_solution.res_choice())

<<

<11[

[1,0

,1,0

],[1

,1,0

,1]]

動態規劃 揹包問題

給定n個物品,重量是,價值是,包的容量 承重 是w 問,放入哪些物品能使得包內價值最大 1 需要將問題轉化為子問題,通過遞迴實現,且子問題必然與父問題存在關聯 2 定義v i,j 表示為,當item取自前i個items且揹包capacity j 時,揹包問題的最優解,也即最高的價值。3 從前i個it...

動態規劃 揹包問題

不廢話,直接上 動態規劃,揹包問題。輸入為 int n 物品的種類數。int n weight 各件物品的重量。int n value 各種物品的價值。int w 揹包最大的裝載重量。輸出 v n b 的值,最大的裝載價值。x n 各類物品的裝載數量。author huangyongye publi...

動態規劃 揹包問題

1 開心的金明 問題描述 金明今天很開心,家裡購置的新房就要領鑰匙了,新房裡有一間他自己專用的很寬敞的房間。更讓他高興的是,媽媽昨天對他說 你的房間需要購買哪些物品,怎麼布置,你說了算,只要不超過n 元錢就行 今天一早金明就開始做預算,但是他想買的東西太多了,肯定會超過媽媽限定的n 元。於是,他把每...