動態規劃 揹包問題

2021-10-07 18:56:30 字數 1156 閱讀 6224

01揹包:n種不同的物品,每個物品有重量w[i],和價值v[i],每個物品只能拿一次,給你容量為m的揹包,怎樣才能取得最大價值

普通01揹包

#include

#include

#include

using

namespace std;

intmain()

return0;

}

01大揹包

#include

using

namespace std;

const

int maxn=

1e6+5;

const

int inf=

0x3f3f3f3f

;#define ll long long

ll n,m,dp[maxn]

,w[maxn]

,v[maxn]

;int

main()

memset

(dp,inf,

sizeof

(dp));

dp[0]

=0;for

(int i=

1;i<=n;i++

)for

(int j=sum;j>=v[i]

;j--

) dp[j]

=min

(dp[j]

,dp[j-v[i]

]+w[i]);

//dp[j]表示價值為j的最小容量為dp[j]

for(

int i=sum;i>=

0;i--)if

(dp[i]

<=m)

//當容量小於等於揹包容量時輸出此時的能帶走的價值i

}

完全揹包:n種不同的物品,每個物品有重量w[i],和價值v[i],乙個物品可以拿多次,給你容量為m的揹包,怎樣才能取得最大價值?

#include

#include

#include

using

namespace std;

intmain()

return0;

}

動態規劃 揹包問題

給定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 元。於是,他把每...