我竟然没没想到分组背包怎么写!!!
a[i][k]记录第i组第k个在输入时的编号
for(int i=0;i<组数;i++)
{
for(int j=背包大小;j>=0;j--)
{
for(int k=0;k<本组个数;k++)
{
int ji=a[i][k];
if(zhong[ji]>=j)
{
ans[j]=max(ans[j],ans[j-zhong[ji]]+zhi[ji]);
}
}
}
}
随意手写的,代码可能有偏差,但思路是对的
我竟然没没想到分组背包怎么写!!!
a[i][k]记录第i组第k个在输入时的编号
for(int i=0;i<组数;i++)
{
for(int j=背包大小;j>=0;j--)
{
for(int k=0;k<本组个数;k++)
{
int ji=a[i][k];
if(zhong[ji]>=j)
{
ans[j]=max(ans[j],ans[j-zhong[ji]]+zhi[ji]);
}
}
}
}
随意手写的,代码可能有偏差,但思路是对的