当前位置: 首页 > article >正文

动态规划-背包问题——[模版]完全背包问题

1.题目解析

题目来源

[模版]完全背包_牛客题霸_牛客

测试用例 

2.算法原理

1.状态表示

与01背包相同,这里的完全背包也是需要一个二维dp表来表示最大价值,具体如下

求最大价值dp[i][j]:在[1,i]区间选择物品,此时总体积不大于j时的最大价值

求装满时的价值dp[i][j]:在[1,i]区间选择物品,此时总体积严格等于j时的价值

2.状态转移方程

3.初始化

4.填表顺序

从上至下,每一行从左到右

5.返回值 

返回最后一个位置dp表的值

3.实战代码

#include <iostream>
#include <string.h>
using namespace std;
const int N = 1010;
int dp[N][N];
int n,V;
int v[N];
int w[N];

int main()
{
    cin>>n>>V;
    for(int i = 1;i <= n;i++)
    {
        cin>>v[i]>>w[i];
    }
    for(int i = 1;i <= n;i++)
    {
        for(int j = 0;j <= V;j++)
        {
            dp[i][j] = dp[i-1][j];
            if(j >= v[i])
            {
                dp[i][j] = max(dp[i][j],dp[i][j-v[i]] + w[i]);
            }
        }
    }
    cout<<dp[n][V]<<endl;

    memset(dp,0,sizeof(dp));
    for(int j = 1;j <= V;j++)
    {
        dp[0][j] = -1;
    }
    for(int i = 1;i <= n;i++)
    {
        for(int j = 0;j <= V;j++)
        {
            dp[i][j] = dp[i-1][j];
            if(j >= v[i] && dp[i][j-v[i]] != -1)
            {
                dp[i][j] = max(dp[i][j],dp[i][j-v[i]] + w[i]);
            }
        }
    }
    cout<<(dp[n][V] == -1 ? 0 : dp[n][V])<<endl;

    return 0;
}

代码解析 

4.代码优化

 


http://www.kler.cn/a/396287.html

相关文章:

  • C语言之MakeFile
  • Spring boot + Vue2小项目基本模板
  • @Autowired 和 @Resource思考(注入redisTemplate时发现一些奇怪的现象)
  • @Autowired和@Resource的区别
  • 如何在 Ubuntu 上 部署 OceanBase
  • Python小游戏24——小恐龙躲避游戏
  • NotePad++中安装XML Tools插件
  • 接上篇-使用 element-plus 优化UI界面
  • WukongCRM:github高分开源项目,基于微服务架构 +vue ElementUI的前后端分离CRM系统
  • Linux基本指令(中)(2)
  • 数据结构 ——— 层序遍历链式二叉树
  • 01 P2367 语文成绩
  • spring boot 配置文件
  • vue3: toRef, reactive, toRefs, toRaw
  • 推荐一款高效的网站数据抓取工具:SysNucleus WebHarvy
  • Unity类银河战士恶魔城学习总结(P127 Stat ToolTip属性提示)
  • 企业BI工具如何选择?主流5款BI工具多维对比
  • Opengl光照测试
  • Vue和Vue-Element-Admin(十三):基于vue2比较学习vue3
  • 基于Python 和 pyecharts 制作招聘数据可视化分析大屏
  • windows系统开发环境使用docker打包Django程序部署至服务器Ubuntu系统中
  • PDF编辑的好东西
  • 【动手学电机驱动】 STM32-FOC(7)MCSDK Pilot 上位机控制与调试
  • vue3:computed
  • 腾讯IM web版本实现迅飞语音听写(流式版)
  • Vagrant 没了 VirtualBox 的话可以配 Qemu