動態規劃 揹包九講 揹包問題求方案數

2021-10-24 04:02:27 字數 959 閱讀 9071

有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次

第 i 件物品的體積是 vi,價值是 wi。

求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。

輸出最優選法的方案數。注意答案可能很大,請輸出答案模 1e9+7的結果。

輸入格式

第一行兩個整數,n,v,用空格隔開,分別表示物品數量和揹包容積。

接下來有 n 行,每行兩個整數 vi,wi,用空格隔開,分別表示第 i 件物品的體積和價值。

輸出格式

輸出乙個整數,表示 方案數 模 109+7 的結果。

資料範圍

0解題思路:新建乙個g陣列,記錄下揹包裝該體積的物品的方案數,並且求方案數,f陣列要記得初始化為負無窮。

code:

#include

#include

using

namespace std;

typedef

long

long ll;

const

int maxn=

1e3+7;

const

int mod=

1e9+7;

ll f[maxn]

,g[maxn]

;ll v[maxn]

,w[maxn]

;int

main()

}

ll ans=

0,maxx=0;

for(

int i=

0;i<=m;i++

) maxx=

max(maxx,f[i]);

for(

int i=

0;i<=m;i++

)

cout<}

動態規劃 揹包九講 揹包問題求具體方案

有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出字典序最小的方案。這裡的字典序是指 所選物品的編號所構成的序列。物品的編號範圍是 1 n。輸入格式 第一行兩個整數,...

動態規劃之揹包九講之七 揹包問題求方案數

題目 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出 最優選法的方案數。注意答案可能很大,請輸出答案模 1e9 7 的結果。輸入格式 第一行兩個整數,n,v,用空...

動態規劃之揹包九講之八 揹包問題求具體方案

題目 有 n 件物品和乙個容量是 v 的揹包。每件物品只能使用一次。第 i 件物品的體積是 vi,價值是 wi。求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出 字典序最小的方案。這裡的字典序是指 所選物品的編號所構成的序列。物品的編號範圍是 1 n。輸入格式 第一行兩...