题目描述
给定 n 种物品,背包容量为 C。
每种物品重量、价值、数量。
往背包装一些物品,问在重量不超过背包容量的情况下可获得的最大价值。
输入格式
第一行 C 和 n。
接来下 n 行,每行三个整数,依次是每种物品的重量、价值、数量。
哪里错了?
#include<bits/stdc++.h>
using namespace std;
int n,m,t,x,a[2005][2005],b[10001],c[10001],d[10001],f[10001];
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++)
{
cin>>b[i]>>c[i]>>x;
t=max(t,x);
d[x]++,a[x][d[x]]=i;
}
for(int i=1;i<=n;i++) for(int j=m;j>=0;j--) for(int k=1;k<=d[i];k++) if(j>=b[a[i][k]]) f[j]=max(f[j],f[j-b[a[i][k]]]+c[a[i][k]]);
cout<<f[m];
return 0;
}