算法:空间进行了优化
这里仅仅需要对每组内的物品进行存储即可
算是比较短的代码了
C++ 代码
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int MAXN = 1E2+7;
int n, v, s;
int bw[MAXN], bv[MAXN];
int dp[MAXN];
int main(){
cin>>n>>v;
while(n--){
cin>>s;
for(int i=1; i<=s; i++)
cin>>bv[i]>>bw[i];
for(int i=v; i>=1; i--){
for(int j=1; j<=s; j++){
if(i>=bv[j])
dp[i] = max(dp[i], dp[i-bv[j]]+bw[j]);
}
}
}
cout<<dp[v]<<endl;
return 0;
}