多重背包bz居然写错了(震惊.jpg)第一点是多重背包第三冲从0 开始啊喂
第二,开二位数组自己跟自己比,为什么要f [ i ] [ j ] = max ( f [ i - 1] [ j ] ...........)呢?
#include<bits/stdc++.h>
using namespace std;
int n,m,v[100010],w[100010],s[100010],f[510][6010];
int main()
{
freopen("party.in","r",stdin);
freopen("party.out","w",stdout);
std::ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>v[i]>>w[i]>>s[i];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int k=0;k<=s[i]&&k*v[i]<=j;k++)
{
f[i][j]=max(f[i][j],f[i-1][j-k*v[i]]+k*w[i]);
}
cout<<f[n][m];
return 0;
}