完全背包的动态规划:暴力dfs + dp + dp优化

 有N件物品和一个容量是 V 的背包,每个物品有各自的体积和价值,且每个物品可以放多次,如何让背包里装入的物品具有最大的价值总和?

本篇将给出代码,具体讲解请移步以下博客:动态规划入门:从暴力dfs到dp-CSDN博客

从01背包开始动态规划:暴力解法 + dp + 滚动数组 + dp优化-CSDN博客

方法1:暴力dfs

#include<iostream>
#include<cmath>
using namespace std;int n,V;
const int N = 1010;
int v[N];
int w[N];int dfs(int index,int spV){if(index > n) return 0;//可以在选第index个物品if(spV >= v[index])return max(dfs(index + 1,spV),dfs(index,spV - v[index]) + w[index]);else return dfs(index + 1,spV);
}int main(){cin >> n >> V;for(int i = 1;i <= n;i++){cin >> v[i] >> w[i];}cout << dfs(1,V);return 0;
}

方法二:dp,二维数组

  •   递推公式 = dfs向下递归公式  
  •   递推数组初始值 = dfs递归边界  
#include<iostream>
using namespace std;int n,V;
const int N = 1010;
int v[N];
int w[N];
int f[N][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++){f[i][j] = f[i - 1][j];if(j >= v[i])f[i][j] = max(f[i - 1][j],f[i][j - v[i]] + w[i]);}}int res = 0;for(int i = 0;i <= V;i++){if(res < f[n][i])res = f[n][i];}cout << res;return 0;
}

方法三:dp优化,一维数组

#include<iostream>
using namespace std;int n,V;
const int N = 1010;
int v[N];
int w[N];
int f[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++){if(j >= v[i])f[j] = max(f[j],f[j - v[i]] + w[i]);}}cout << f[V];return 0;
}

以上是本文全部内容,如果对你有帮助点个赞再走吧~  ₍˄·͈༝·͈˄*₎◞ ̑̑

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

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

相关文章

深度学习pytorch——激活函数损失函数(持续更新)

论生物神经元与神经网络中的神经元联系——为什么使用激活函数&#xff1f; 我们将生物体中的神经元与神经网络中的神经元共同分析。从下图可以看出神经网络中的神经元与生物体中的神经元有很多相似之处&#xff0c;由于只有刺激达到一定的程度人体才可以感受到刺激&#xff0c…

网络安全——笔记

XSS&#xff1a;跨站脚本&#xff08;Cross-site scripting&#xff09; XSS 全称“跨站脚本”&#xff0c;是注入攻击的一种。其特点是不对服务器端造成任何伤害&#xff0c;而是通过一些正常的站内交互途径&#xff0c;例如发布评论&#xff0c;提交含有 JavaScript 的内容文…

hyperf 二十八 修改器 一

教程&#xff1a;Hyperf 一 修改器和访问器 根据教程&#xff0c;可设置相关函数,如set属性名Attribute()、get属性名Attribute()&#xff0c;设置和获取属性。这在thinkphp中也常见。 修改器&#xff1a;set属性名Attribute()&#xff1b;访问器&#xff1a;get属性名Attri…

从零开始手写RPC框架(番外) Netty基础知识点及常见面试题汇总

目录 Netty 的核心组件Bytebuf(字节容器)Bootstrap 和 ServerBootstrap(启动引导类)Channel(网络操作抽象类)SelectorEventLoop(事件循环)NioEventLoopGroup 默认的构造函数会起多少线程?ChannelHandler(消息处理器) 、 ChannelPipeline(ChannelHandler 对象链表)…

进程控制 | 认识fork函数 | 进程终止 | 进程等待

进程创建 初始fork函数 fork函数是为了创建子进程而生的&#xff0c;通过fork函数之后&#xff0c;我们的父进程的代码和数据是共享的&#xff0c;我们这里是可以通过man手册进行查询的&#xff0c;查询之后是可以发现fork函数是会返回两个值的至于为什么会返回两个值&#x…

牛,The O-one ——通过语音交互控制电脑的开源语言模型

模型介绍 The O-one &#xff1a;一个创新的开源语言模型计算机 可以让你通过语音交互来和你的计算机进行对话&#xff0c;完成询问、指令下达等任务。灵感居然来自Andrej Karpathy 的 LLM 操作系统。O1运行一个代码解释语言模型&#xff0c;并在计算机内核发生特定事件时调用…

社科赛斯考研:二十二载岁月铸辉煌,穿越周期的生命力之源

在考研培训行业的浩瀚海洋中&#xff0c;社科赛斯考研犹如一艘稳健的巨轮&#xff0c;历经二十二载风礼&#xff0c;依然破浪前行。在考研市场竞争白热化与学生对于考研机构要求越来越高的双重影响下&#xff0c;社科赛斯考研却以一种分蘖成长的姿态&#xff0c;扎根、壮大&…

六、C#快速排序算法

简介 快速排序是一种常用的排序算法&#xff0c;它基于分治的思想&#xff0c;通过将一个无序的序列分割成两个子序列&#xff0c;并递归地对子序列进行排序&#xff0c;最终完成整个序列的排序。 其基本思路如下&#xff1a; 选择数组中的一个元素作为基准&#xff08;pivot…

基于python+vue共享单车信息系统的设计与实现flask-django-php-nodejs

课题主要分为二大模块&#xff1a;即管理员模块和用户模块&#xff0c;主要功能包括&#xff1a;用户、区域、共享单车、单车租赁、租赁归还、报修信息、检修信息等&#xff1b;快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省…

实在智能受邀参加中国人工智能产业发展联盟大会(AIIA)主题分享,共筑智能体机遇新篇章

近日&#xff0c;中国人工智能产业发展联盟&#xff08;AIIA&#xff09;在海口召开第十一次全体会议&#xff0c;作为该联盟成员单位&#xff0c;实在智能合伙人&核心算法负责人欧阳小刚受邀出席大会&#xff0c;并以《从RPA到智能体&#xff0c;数字员工的发展及在金融行…

BeanUtils.populate()的使用

一、方法解释 BeanUtils位于org.apache.commons.beanutils.BeanUtils下 BeanUtils.populate(Object bean, Map properties) populate是BeanUtils工具类的一个方法 1.1 作用这个方法会遍历map<key, value>中的key&#xff0c;如果bean中有这个属性&#xff0c;就把这个key…

1185: 手机打字

收藏 难度&#xff1a;一般 标签&#xff1a;暂无标签 题目描述 手机的键盘是这样的&#xff1a; 1 2abc 3def 4ghi 5jkl 6mno 7pqrs 8tuv 9wxyz * 0 # 要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下&#xff0c;第一下会出w&#xff0c;而第二下会把w变成x…

《逆水寒》“公费追星”被骂上热搜,玩家为何如此抗拒剧游联动?

游戏行业最近真是风波不断。 《逆水寒》手游因为和武侠剧《莲花楼》深入联动而遭到玩家抵制&#xff0c;网易游戏测评总监被质疑“公费追星”&#xff0c;还波及到了成毅、陈都灵等多位演员。 尤其是《莲花楼》的男主角成毅&#xff0c;遭到大量《逆水寒》手游玩家的吐槽调侃…

微信向量检索分析一体化数仓探索:OLAP For Embedding

作者&#xff1a;WeOLAP 团队 数据挖掘团队 擅长 OLAP 分析的 ClickHouse 不仅可以用于 vector search&#xff0c;还可承担起整条 embedding 的加工处理工作,All in one Pipeline 也让速度远超传统批处理框架数倍&#xff1b;检索性能虽无法与专业 sim 检索服务相媲美&#xf…

十大经典排序之计数排序

文章目录 概要整体架构流程代码实现小结 概要 计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序&#xff0c;计数排序要求输入的数据必须是有确定范围的整数。 整体架构流程 &#xff08;1&#xff09;找出待排序的数组中…

Docker 【安装MongoDB】

文章目录 前言一、安装二、使用三、mongodb常用指令总结 前言 MongoDB是一个非关系型数据库&#xff0c;它主要的应用场景有这些 显示 相比mysql&#xff0c;MongoDB没有事务&#xff0c;索引之类的东西。最小单位是文档。 可能有人说&#xff0c;为什么这个场景我要用mongo…

MO尺度(大气边界层)

在大气表面层( atmospheric surface layer)中,MO参数是用来决定流动是中性或者非中性的一个重要参数。其定义是 z / L z/L z/L&#xff0c;其中 L L L为Obukhov长度&#xff0c;其含义是浮力产生的湍动能和剪切产生的湍动能之比(Hj h AIP 2023)(Monin IAS,1954)&#xff0c;具体…

有了gitlab runner,可以不用Jenkins,maven吗

一.可以不使用 Jenkins。GitLab Runner 是 GitLab CI/CD 的一部分,是一个开源项目,用于运行你的作业并发送结果回 GitLab,它是 GitLab CI/CD 的执行组件。 GitLab Runner 可以与 GitLab CI/CD 无缝集成,提供了一个强大的、与 GitLab CI/CD 管道紧密集成的持续集成和部署(C…

文件怎么做扫码预览?创建文件活码的步骤有哪些?

现在文件可以通过扫描二维码的方式来获取&#xff0c;与传统的通过聊天软件来传输相比&#xff0c;二维码方式的应用更加的方便&#xff0c;其他人只需要通过扫描一张二维码就可以在手机上浏览或者下载文件&#xff0c;通过手机就可以预览、存储。 文件二维码的制作方法也很简…

“龙腾九洲———孙文佳师生书画作品国际交流展”首展成功举行

应美国纽约罗切斯特大学、美国满煜国际文化艺术交流公司的邀请&#xff0c;“龙腾九洲———孙文佳师生书画作品国际交流展”首展开幕式于2024年1月23日上午12时在美国纽约罗切斯特大学西蒙商学院会展中心举行。 开幕式上&#xff0c;罗切斯特大学负责人Priya和美国满煜文化公司…