动态规划:01背包理论基础
文章链接:代码随想录
题目链接:卡码网:46. 携带研究材料
01背包问题
二维数组解法:
#include <bits/stdc++.h>
using namespace std;
void slove(int M, int N){
vector<vector<int>> dp(M, vector<int> (N + 1));
vector<int> weight(M), value(M);
for (int i = 0; i < M; i++){
cin >> weight[i];
}
for (int i = 0; i < M; i++){
cin >> value[i];
}
for (int j = 0; j <= N; j++){
if (j >= weight[0]) dp[0][j] = value[0];
}
for (int i = 1; i < M; i++){
for (int j = 0; j <= N; j++){
if (j < weight[i]) dp[i][j] = dp[i - 1][j];
else dp[i][j] = max(dp[i - 1][j], dp[i -