模板题解
一维dp数组
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <math.h>
#include <vector>
using namespace std;
int main(){
int N=0, V=0, v[1005], w[1005];
int dp[1005];
while(cin >> N >> V){
memset(dp, 0, sizeof(dp));
for(int i=1; i<=N; ++i){
cin >> v[i] >> w[i];
}
for(int i=1; i<=N; ++i){
for(int j=V; j>=v[i]; --j){ //j从0开始,有容积为0的情况
dp[j] = max(dp[j], dp[j-v[i]]+w[i]); //max函数
}
}
cout << dp[V] << endl;
}
return 0;
}