欢迎大佬来到蒟蒻的博客

天接云涛连晓雾。星河欲转千帆舞。仿佛梦魂归帝所,闻天语,殷勤问我归何处。我报路长嗟日暮,学诗谩有惊人句。九万里风鹏正举。风休住,蓬舟吹取三山去!

模板汇总


一、背包问题

(一)01背包(每个物品最多只能放一次)

模板1:

for(int i=1; i<=n; i++)
{
  for(int j=V; j>=1; j--)
  {
    f[i][j] = f[i-1][j];
    if(v[i] <= j)
    {
      f[i][j] = max(f[i][j], f[i-1][j-v[i]] + w[i]);
    }
  }
}

 模板2:

for(int i=1; i<=n; i++)
{
    for(int j=V; j>=1; j--)
    {
        if(v[i] <= j)
        f[j] = max(f[j], f[j-v[i]] + w[i]);
    }
}            

 

(二)完全背包(一个物品可以放无数次)

模板一:

 

for(int i=1; i<=n; i++)
{
    for(int j=V; j>=1; j--)
    {
        for(int k=1; k*v[i]<=j; k++)
        {
            f[i][j] = max(f[i][j], f[i-1][j]);
        f[i][j] = max(f[i][j], f[i-1][j-k*v[i]] + k*w[i]);
        }
    }
}            

 

 模板二:

 

for(int i=1; i<=n; i++)
    {
        for(int j=V; j>=1; j--)
        {
            for(int k=1; k*v[i]<=j; k++)
            {
                f[j] = max(f[j], f[j-k*v[i]] + k*w[i]);
            }
        }
    }

 

posted @ 2020-10-21 23:04  Lonely_Fish  阅读(83)  评论(0)    收藏  举报