AcWing 4. 多重背包问题 I
原题链接
简单
作者:
acdongla
,
2021-03-12 07:08:11
,
所有人可见
,
阅读 330
#include <iostream>
using namespace std;
int f[1010];
int main(void) {
int n, m;
cin >> n >> m;
while (n--) {
int v, w, s;
cin >> v >> w >> s;
while (s--) {
for (int i = m; i >= v; --i)
f[i] = max(f[i], f[i - v] + w);
}
}
cout << f[m];
return 0;
}
代码二
#include <iostream>
using namespace std;
int f[110];
int main(void) {
int n, m;
cin >> n >> m;
while (n--) {
int v, w, s;
cin >> v >> w >> s;
for (int i = m; i >= 0; --i)
for (int j = 1; j <= s && j * v <= i; ++j)
f[i] = max(f[i], f[i - j * v] + w * j);
}
cout << f[m];
return 0;
}