问题描述:
解法:
其实只需要在 01背包 的基础上再增加一个纬度代表重量就可以了
因为是在 01背包 的基础上,所以更新的话我们和 01背包一样从大往小更新
int dp[1010][1010]; int main() { int n,m,v; std::cin >> n >> v >> m; for (int i = 1;i <= n;i++) { int a,b,c; std::cin >> a >> b >> c; for (int j = v;j >= a;j--) { for (int k = b;k <= m;k++) { dp[j][k] = std::max(dp[j][k],dp[j-a][k-b]+c); } } } std::cout << dp[v][m] << std::endl; return 0; }