问题描述:
解题思路:
二维优化01背包模板题。与一维优化01背包不同在于多增加一维。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 9;
int dp[N][N]; //二维的01背包,dp[i][j]:i是体积,j是重量***
int main()
{
int n, V, M;cin >> n >> V >> M;
for(int i = 1; i <= n; i++)
{
int v, m, w;cin >> v >> m >> w;
for(int j = V; j >= v; j--) // 与一维01背包不同点:多了一重循环
{
for(int k = M; k >= m; k--)
dp[j][k] = max(dp[j][k], dp[j - v][k - m] + w);
}
}
cout << dp[V][M] << '\n';
return 0;
}
知识点:二维优化01背包