acwing 3 完全揹包問題

2021-10-09 23:20:22 字數 899 閱讀 6623

有 n 種物品和乙個容量是 v 的揹包,每種物品都有無限件可用。

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

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

輸出最大價值。

輸入格式

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

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

輸出格式

輸出乙個整數,表示最大價值。

資料範圍

0原題鏈結

狀態轉移方程:dp[i][j]=max(dp[i-1][ j ],dp[ i ][ j-vi[i] ]+wi[ i ])

#include

#include

using

namespace std;

int dp[

1007][

1007];

//i表示前i個物品,j表示重量

intmain()

}printf

("%d"

,dp[n]

[m])

;return0;

}

滾動陣列:

狀態轉移方程:dp[j]=max(dp[j] , dp[j-vi[i] ]+wi[ i ])

#include

#include

using

namespace std;

int dp[

1007];

//i表示重量

intmain()

}printf

("%d"

,dp[m]);

return0;

}

ACWing 3 完全揹包問題

有n nn種物品和乙個容量是v vv的揹包,每種物品都有無限件可用。第i ii種物品的體積是v iv i vi 價值是w iw i wi 求解將哪些物品裝入揹包,可使這些物品的總體積不超過揹包容量,且總價值最大。輸出最大價值。輸入格式 第一行兩個整數,n nn,v vv,用空格隔開,分別表示物品種數...

AcWing 3 完全揹包問題

題目描述 解題思路 與01揹包問題解法 相似 01揹包問題 與01揹包問題不同點 1 每件物品可以在揹包容量足夠的情況下無限制拿取。2 最大價值不一定在list n m 上需要對list的第m列排序。時間複雜度 o n n 源 include include includeusing namespa...

AcWing 3 完全揹包問題

樸素做法 會超時 includeusing namespace std const int n 1010 int n,m int v n w n int f n n int main f i j 需要更新的情況 選 k k 可以為 0 個第 i 個物品,前提是能夠裝得下 k 個第 i 個物品,也就是...