核心思想:因为数据范围小 所以直接for循环组中每组数据
每组数据输入完 for循环求f[j] = max(f[j] , f[j–v] + w) 01背包
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 110;
int v[N],w[N];
int n,m;
int f[N];
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
int s;
cin>>s;
for(int j=0;j<s;j++) cin>>v[j]>>w[j]; //输入组中数据
for(int j=m;j>=0;j--) //01背包
{
for(int k=0;k<s;k++)
{
if(j>=v[k]) f[j] = max(f[j] , f[j-v[k]] + w[k]);
// v[i][k] w[i][k]
}
}
}
cout<<f[m];
}