所谓多重背包就是规定每个物体有一定的个数
#include<iostream>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
int a[10001],b[10001],c[10001];//重量 价值 个数
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i]>>c[i];
}
int f[10001];
for(int i=1;i<=n;i++)
for(int j=m;j>=0;j--)
for(int k=0;k<=c[i];k++)
{
if(j-k*a[i]<0)break;
f[j]=max(f[j],f[j-k*a[i]]+k*b[i]);//将每件物品在取各数量的情况全部遍历
}
cout<<f[m]<<endl;//最优解
return 0;
}