【动态规划】完全背包

在这里插入图片描述

欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:题目解析
🌎推荐文章:【LeetCode】winter vacation training

在这里插入图片描述


目录

  • 👉🏻完全背包

👉🏻完全背包

原题链接:完全背包
mycode1(超出时间限制):

#include <iostream>
#include<vector>
using namespace std;int main() {int n, V;cin >> n >> V;vector<int> w(n + 1), v(n + 1);// vector<vector<int>> goods(n,vector<int>(2));for (int k = 1; k <= n; k++) cin >> v[k] >> w[k];//创建dp表vector<vector<int>> dp1(n + 1, vector<int>(V + 1)), dp2(n + 1, vector<int>(V + 1));//dp表初始化for (int k = 1; k < V + 1; k++){dp2[0][k] = -1;}//开始填表for (int i = 1; i < n + 1; i++){for (int j = 1; j < V + 1; j++){// dp1[i][j]特征方程dp1[i][j] = dp1[i - 1][j];int num = 1;if (j - v[i] >= 0){dp1[i][j] = max(dp1[i][j], w[i] * num + dp1[i - 1][j - v[i] * num]);//一定要在这个位置先放一个,可能第一个就是最大(调试出来的血泪)for (; j - v[i] * num >= 0; num++){dp1[i][j] = max(dp1[i][j], w[i] * num + dp1[i - 1][j - v[i] * num]);}//--num;//因为此时j - v[i] * num已经<0所以此时要--num恢复j - v[i] * num >= 0的num状态//dp1[i][j] = max(dp1[i][j], w[i] * num + dp1[i - 1][j - v[i] * num]);}//dp2[i][j]特征方程num = 1;//num重新初始化为1dp2[i][j] = dp2[i - 1][j];if (j - v[i] >= 0 && dp2[i ][j - v[i]] != -1){dp2[i][j] = max(dp2[i][j], w[i] * num + dp2[i][j - v[i] * num]);//一定要在这个位置先放一个,可能第一个就是最大(调试出来的血泪)for (; j - v[i] * num >= 0 && dp2[i][j - v[i] * num] != -1; num++){dp2[i][j] = max(dp2[i][j], w[i] * num + dp2[i][j - v[i] * num]);}//--num;//因为此时j - v[i] * num已经<0所以此时要--num恢复j - v[i] * num >= 0的num状态//dp2[i][j] = max(dp2[i][j], w[i] * num + dp2[i][j - v[i] * num]);}}}cout << dp1[n][V] << endl;cout << (dp2[n][V] == -1 ? 0 : dp2[n][V]) << endl;
}

在这里插入图片描述
在这里插入图片描述

我好不容易心动一次,你却让我输得这么彻底~呵呵

优化代码:
在这里插入图片描述

这里主要优化了状态转移方程
mycode2:

#include <iostream>
#include<vector>
using namespace std;
int main() {int n, V;cin >> n >> V;vector<int> w(n + 1), v(n + 1);// vector<vector<int>> goods(n,vector<int>(2));for (int i = 1; i <= n; i++) cin >> v[i] >> w[i];//创建dp表vector<vector<int>> dp1(n + 1, vector<int>(V + 1)), dp2(n + 1, vector<int>(V + 1));//dp表初始化for (int i = 1; i < V + 1; i++){dp2[0][i] = -1;}//开始填表for (int i = 1; i < n + 1; i++){for (int j = 0; j < V + 1; j++){//dp1[i][j]特征方程dp1[i][j] = dp1[i - 1][j];if (j - v[i] >= 0)dp1[i][j] = max(dp1[i][j], w[i] + dp1[i ][j - v[i]]);//dp2[i][j]特征方程dp2[i][j] = dp2[i - 1][j];if (j - v[i] >= 0 && dp2[i][j - v[i]] != -1)dp2[i][j] = max(dp2[i][j], w[i] + dp2[i][j - v[i]]);}}cout << dp1[n][V] << endl;cout << (dp2[n][V] == -1 ? 0 : dp2[n][V]) << endl;
}

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

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

相关文章

素数求解的N种境界

本期介绍&#x1f356; 主要介绍&#xff1a;如何快速筛查出素数的各种方法&#x1f440;。 文章目录 1. 前言2. 试除法2.1 试除2~(n-1)2.2 排除2倍数的合数2.3 试除2~sprt(n) 3. 筛选法3.1 如何实现筛除法求素数3.2 优化代码 4. 总结 1. 前言 素数又称质数(prime number)&…

opencv解析系列 - 基于DOM提取大面积植被(如森林)

Note&#xff1a;简单提取&#xff0c;不考虑后处理&#xff08;填充空洞、平滑边界等&#xff09; #include <iostream> #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include <opencv2/opencv.hpp> using namespace cv…

企业微信HOOK协议,新设备二次验证处理

提示设备强制二次验证问题已处理 HOOK&#xff1a;https://www.showdoc.com.cn/1663062930779972/7859611259700402密码&#xff1a;999999999

maven项目结构管理统一项目配置操作

一、maven分模块开发 Maven 分模块开发 1.先创建父工程&#xff0c;pom.xml文件中&#xff0c;打包方式为pom 2.然后里面有许多子工程 3.我要对父工程的maven对所有子工程进行操作 二、解读maven的结构 1.模块1 <groupId>org.TS</groupId><artifactId>TruthS…

管理 PostgreSQL 中配置参数的各种方法

管理 PostgreSQL 中配置参数的各种方法 1. 概述 PostgreSQL提供了一个配置文件 postgresql.conf 让用户自定义参数。您可能需要更改一些参数来调整性能或在工作环境中部署 PostgreSQL 服务器。在这篇博文中&#xff0c;我们将探索管理这些参数的不同方法。 2. 以不同方式管理…

【MySQL 系列】MySQL 起步篇

MySQL 是一个开放源代码的、免费的关系型数据库管理系统。在 Web 开发领域&#xff0c;MySQL 是最流行、使用最广泛的关系数据库。MySql 分为社区版和商业版&#xff0c;社区版完全免费&#xff0c;并且几乎能满足全部的使用场景。由于 MySQL 是开源的&#xff0c;我们还可以根…

python创建和上传自己的PyPI库

文章目录 创建和上传自己的PyPI库pypi准备文件制作PyPI包在上传前&#xff0c;先本地验证注册PyPI账户上传pypi判断python包质量之 SourceRankLibraries.io 参考 创建和上传自己的PyPI库 pypi 官方地址&#xff1a;https://pypi.org/ Python中我们经常会用到第三方的包&…

第一次捡垃圾

配置 cpu e3 1225 v6 淘宝 130 显卡 p106-100(1060矿卡的特称) 咸鱼 118 内存 8g 3200频率 2 咸鱼 702140 硬盘 128g 固态 咸鱼 35 主板 ex-b150m-v3 咸鱼 110 电源 400w 咸鱼 58 4热管cpu散热器 咸鱼 28 机箱 迷你 拼多多 28 电源线 1m5 淘宝 8 pcie转m.2 拼多多 9 编程器 用…

2.类和对象-运算符重载

文章目录 运算符重载1.运算符重载2.<<运算符重载3.运算符重载4.运算符重载5.和!运算符重载6.()运算符重载 运算符重载 1.运算符重载 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string>using namespace std;class Person { public:/*类…

纯css实现太极八卦图

感觉最近好像闯鬼了&#xff0c;赶紧写个八卦图避避邪&#xff0c;开玩笑了&#xff0c;不废话&#xff0c;上菜&#xff0c;看效果上代码。 效果 代码&#xff0c;你们都是大佬&#xff0c;这里就不解释代码了 &#xff08;hover会转动喔&#xff09;。 <!DOCTYPE html&g…

【netty系列-02】深入理解socket本质和BIO底层实现

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478 深入理解socket本质和bio底层实现 …

Go编译报错 link: running gcc failed: exit status 1(已解决)

背景 在对一个开源的Go程序二次开发 重新编译时 &#xff0c; 报错截图如下 报错文字如下&#xff1a;关键信息 link: running gcc failed: exit status 1 $ go build -o orchestrator-didi -i go/cmd/orchestrator/main.go go build: -i flag is deprecated # command-li…