【算法|动态规划No.32 | 完全背包问题】完全背包模板题

news2024/11/28 6:53:53

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

原题链接:点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣题目解析
  • 3️⃣解题代码

1️⃣题目描述

在这里插入图片描述

2️⃣题目解析

解法1:

状态表示:dp[i][j]表示从前i个物品中进行挑选体积不超过j的所有选法中的最大价值。

状态转移方程:

  • dp[i][j] = max(dp[i][j],dp[i - 1][j - V[i] * k] + k * W[i])

3️⃣解题代码

朴素算法:

#include<iostream>
using namespace std;

const int N = 1010;
int V[N],W[N],dp[N][N];

int main()
{
    int n,v;
    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++)
        {
            for(int k = 0;k * V[i] <= j;k++)
            {
                dp[i][j] = max(dp[i][j],dp[i - 1][j - V[i] * k] + k * W[i]);   
            }
        }
    }
    cout << dp[n][v];
    return 0;
}

时间优化:

#include<iostream>
using namespace std;

const int N = 1010;
int V[N],W[N],dp[N][N];

int main()
{
    int n,v;
    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 = 1;j <= v;j++)
        {
            dp[i][j] = dp[i - 1][j];
            if(j - V[i] >= 0) dp[i][j] = max(dp[i - 1][j],dp[i][j - V[i]] + W[i]);
        }
    }
    cout << dp[n][v];
    return 0;
}

空间优化(滚动数组):

#include<iostream>
using namespace std;

const int N = 1010;
int V[N],W[N],dp[N];

int main()
{
    int n,v;
    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 = V[i];j <= v;j++)
            dp[j] = max(dp[j],dp[j - V[i]] + W[i]);
    cout << dp[v];
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1146143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年【加氢工艺】考试题库及加氢工艺免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年加氢工艺考试题库为正在备考加氢工艺操作证的学员准备的理论考试专题&#xff0c;每个月更新的加氢工艺免费试题祝您顺利通过加氢工艺考试。 1、【单选题】《使用有毒物品作业场所劳动保护条例》规定,从事使用高…

Linux常用命令——chown命令

在线Linux命令查询工具 chown 用来变更文件或目录的拥有者或所属群组 补充说明 chown命令改变某个文件或目录的所有者和所属的组&#xff0c;该命令可以向某个用户授权&#xff0c;使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D&#xff0…

杨辉三角形

要求输出10行杨辉三角形如下图&#xff1a; 杨辉三角的特点: 1,只需要处理下三角形; 2.第一列和主对角线的值为1; 3.其它位置的值等于上一行前 一列上一行同列的值。 int main() { #define ROW 10//行和列int arr[ROW][ROW];for (int i 0; i < ROW; i){for (int j 0; j &l…

第四章 文件管理 十一、虚拟文件系统

目录 一、虚拟文件系统图 二、虚拟文件系统的特点 三、存在的问题 四、文件系统挂载 一、虚拟文件系统图 二、虚拟文件系统的特点 1、向上层用户进程提供统一标准的系统调用接口&#xff0c;屏蔽底层具体文件系统的实现差异。 2、VFS要求下层的文件系统必须实现某些规定的…

SPI 串行外围设备接口

SPI&#xff08;Serial Peripheral interface&#xff09;&#xff0c;串行外围设备接口。是一种全双工形式的高速同步通信总线。 SPI 硬件接口由四根信号线组成&#xff0c;分别是&#xff1a; SDI&#xff1a;数据输入SDO&#xff1a;数据输出SCK&#xff1a;时钟CS/SS&…

BUUCTF 简单注册器 1

题目是简单注册器 分析 直接运行下 有个错误提示&#xff0c;使用jadx查找 &#xff08;ctrl shift f&#xff09; 直接复制下代码 int flag 1; String xx editview.getText().toString(); if (xx.length() ! 32 || xx.charAt(31) ! a || xx.charAt(1) ! b || (xx.cha…

数据库连接技术

一、许多编程语言 都可以 连接数据库。不是在C中加入SQL语句&#xff0c;而是使 用C编程语言 连接数据库&#xff0c;并执行SQL语句&#xff0c;以获得数据。 数据库连接&#xff0c;有一些通用的方式。C中连接数据库并执行SQL语句&#xff0c;主要有以下几种方式&#xff1a; …

PLC-200 smart 字节与字

这里写自定义目录标题 数据存储器的组合——字节与字组合字与双字组合 数据存储&#xff1a;右侧低位&#xff0c;左侧高位 1输出&#xff1b;0不输出 v&#xff1a;存储区标识符 例如&#xff1a;VB100.0&#xff0c;v存储区标识符&#xff1b;100 字节编号&#xff1b;“.0”…

C语言 定义一个函数,并调用,该函数中打印显示九九乘法表

#include<stdio.h> void chengfabiao() {for (int i 1; i < 10; i){for (int j 1; j < i; j){printf("%d * %d %d\t",j,i,i*j);} printf("\n");} } int main(int argc,const char *argv[]) {chengfabiao();return 0; }

饭局从入门到精通

文章目录 你会把你妈卖到妓院吗&#xff1f;声明一 为什么要请客吃饭1 环境变化&#xff0c;身份跟着变化2 酒杯识人3 吃人嘴软 二 饭局的准备1 明确自己设饭局的目的2 掌握客人的特点3 如何设计陪客的名单 三 如何正确选择饭店1 地段选择法2 环境选择法3 菜系选择法 四 如何邀…

【AD9361 数字接口CMOS LVDSSPI】B 并行数据之CMOS

##接上一篇&#xff1b; 本节介绍 AD9361 数字接口CMOS &LVDS&SPI最后一张表中四种工作模式的具体配置及时序波形图。 目录 1、单端口半双工模式 &#xff08;CMOS&#xff09; *代称 SHC*换句话说&#xff0c;最大值是12‘b0111_1111_1111&#xff0c;即0x7FF&#xf…

IOC课程整理-5 Spring IoC 依赖查找

1 依赖查找的今世前生 2 单一类型依赖查找 3 集合类型依赖查找 4 层次性依赖查找 5 延迟依赖查找 6 依赖查找安全性对比 7 内建可查找的依赖 • AbstractApplicationContext 内建可查找的依赖 注解驱动 Spring 应用上下文内建可查找的依赖&#xff08;部分&#xff09; 8 依…

两个手机屏幕的效果对比

其中一个刚买的二手&#xff0c;卖家说坏了&#xff0c;换成国产屏&#xff0c;没有指纹。其实拿到手时&#xff0c;吾就发现屏幕明显泛白&#xff0c;颜色与手头的相差太大。 对比1 对比2

轻量级 SSO 方略

单点登录 SSO&#xff08;Single Sign On&#xff09;是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统。打通所有系统的账户密码&#xff0c;只需要记住一个就行&#xff0c;而且登录一个系统后&#xff0c;打开其他系统不需要再登录。广义…

【Unity程序技巧】Input管理器

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

【Python 零基础入门】常用内置函数 初探

【Python 零基础入门】内容补充 1 常用内置函数 Python 简介为什么要学习内置函数数据类型和转换int(): 转为整数float(): 转为浮点数list(): 转为列表tuple(): 转换为元组set():转换为集合dict(): 创建字典: 数学运算abs(): 绝对值pow(): 幂运算round(): 四舍五入min(): 最小值…

类与面向对象

章节目录&#xff1a; 一、面向对象二、类2.1 类定义2.2 类对象2.3 self 代表类的实例&#xff0c;而非类 三、类的方法四、多继承五、方法重写六、私有属性及私有方法七、类的专有方法八、专有方法重载九、结束语 一、面向对象 Python 从设计之初就已经是一门面向对象的语言。…

【错误解决方案】ModuleNotFoundError: No module named ‘torch._six‘

1. 错误提示 在python程序中&#xff0c;试图导入一个名为torch._six的模块&#xff0c;但Python提示找不到这个模块。 错误提示&#xff1a;ModuleNotFoundError: No module named torch._six 2. 解决方案 出现这个错误可能是因为你使用的PyTorch版本和你的代码不兼容。在某…

MySQL实战1

文章目录 主要内容一.墨西哥和美国第三高峰1.准备工作代码如下&#xff08;示例&#xff09;: 2.目标3.实现代码如下&#xff08;示例&#xff09;: 4.相似例子代码如下&#xff08;示例&#xff09;: 二.用latest_event查找当前打开的页数1.准备工作代码如下&#xff08;示例&…

nrf52832 开发板入手笔记:J-Flash 蓝牙协议栈烧写

前言 nrf52832 想要开启 蓝牙功能&#xff0c;比如蓝牙主从机功能&#xff0c;需要额外烧写 蓝牙协议栈的固件&#xff1a;softdevice&#xff0c;换句话说&#xff0c;蓝牙协议栈等代码是不开放的&#xff0c;只提供一个 二进制文件。 也就是 nrf52832 Flash 与 RAM 要分区了…