分组背包

我竟然没没想到分组背包怎么写!!!

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]);

        }

    }

  }

}

随意手写的,代码可能有偏差,但思路是对的

posted @ 2019-07-11 22:09  fanhao110  阅读(181)  评论(0编辑  收藏  举报