【C++】背包问题

目录

  • 背包问题
    • 01 背包
      • 背包不装满问题
      • 背包必须满问题
    • 完全背包

背包问题

背包问题属于动态规划的一类题型
请添加图片描述

01 背包

在这里插入图片描述

背包不装满问题

请添加图片描述

背包必须满问题

请添加图片描述

#include <iostream>
using namespace std;
const int N =1010;
#include <vector>
int main()
{int n , V;int v[N];int w[N];cin >> n >> V;//输入数据for(int i = 1;i<= n;i++){cin >> v[i] >> w[i] ;}//题目一//建表vector<vector<int>> dp(n+1,vector<int>(V+1));//初始化 已自动初始化//填表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][j],dp[i-1][j-v[i]]+w[i]);}} //用表  cout << dp[n][V] <<endl;//题目二//初始化for(int i = 1;i<=V;i++){dp[0][i] = -1;}//填表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-1][j-v[i]]!= -1) dp[i][j] = max(dp[i][j],dp[i-1][j-v[i]]+w[i]);}} if(dp[n][V] == -1) cout << 0;//凑不到背包容量else cout << dp[n][V];return 0;
}

完全背包

其实01背包和完全背包的代码只需要改一点点
在这里插入图片描述

请添加图片描述

#include <iostream>
using namespace std;
const int N =1010;
#include <vector>
int main()
{int n , V;int v[N];int w[N];cin >> n >> V;//输入数据for(int i = 1;i<= n;i++){cin >> v[i] >> w[i] ;}//题目一//建表vector<vector<int>> dp(n+1,vector<int>(V+1));//初始化 已自动初始化//填表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][j],dp[i][j-v[i]]+w[i]);//改动}} //用表  cout << dp[n][V] <<endl;//题目二//初始化for(int i = 1;i<=V;i++){dp[0][i] = -1;}//填表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-v[i]]!= -1) //改动i-1 为 idp[i][j] = max(dp[i][j],dp[i][j-v[i]]+w[i]);//改动i-1 为 i}} if(dp[n][V] == -1) cout << 0;//凑不到背包容量else cout << dp[n][V];return 0;
}

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

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

相关文章

【深度学习】从基础原理到未来挑战的全面探索

深度学习的基本原理 深度学习&#xff0c;一种模拟人脑分析和处理数据的机器学习技术&#xff0c;已成为人工智能研究中最令人兴奋的进展之一。其核心在于构建和训练神经网络&#xff0c;这些网络由多个层次组成&#xff0c;每一层都能从输入数据中提取并转换特征。随着数据层层…

【C语言】猜数字小游戏(并讲解随机数相关知识)

前言 一、游戏菜单 二、游戏逻辑 1.用户选择 2.开始游戏 2.1 生成1~100的随机数 总结 前言 本文讲解使用C语言写一个猜数字小游戏(1~100)&#xff0c;涉及到的语法为&#xff1a;循环、分支、随机数、函数 一、游戏菜单 一个游戏的最开始&#xff0c;往往是一个菜单&…

51单片机学习笔记14 LCD1602显示屏使用

51单片机学习笔记14 LCD1602显示屏使用 一、LCD1602介绍1. 简介2. 引脚定义3. DDRAM4. 字模5. 指令&#xff08;1&#xff09;清屏指令 0x01&#xff08;2&#xff09;光标归位指令 0x02&#xff08;3&#xff09;进入模式设置指令 0x06&#xff08;4&#xff09;显示开关控制指…

Springboot相关知识-图片描述(学习笔记)

学习java过程中的一些笔记&#xff0c;觉得比较重要就顺手记录下来了~ 目录 一、前后端请求1.前后端交互2.简单传参3.数组集合传参4.日期参数5.Json参数6.路径参数7.响应数据8.解析xml文件9.统一返回类10.三层架构11.分层解耦12.Bean的声明13.组件扫描14.自动注入 一、前后端请…

IPSEC VPN双机热备份的配置讲解一

IPSEC VPN双机热备份的配置讲解一 VPN 是一种专用网络&#xff0c;可使用公共网络连接两个或两个以上的远程站点。VPN 可使用通过公共网络路由&#xff08;以隧道方式发送&#xff09;的虚拟连接&#xff0c;而非网络之间的专用连接。IPsec VPN 是一项协议&#xff0c;由建立 …

数据结构--树和二叉树

树和二叉树 1.树概念及结构树的概念树的相关概念树的表示 2.二叉树概念及结构概念特殊的二叉树二叉树的性质 3.二叉树顺序结构及实现4.二叉树链式结构及实现二叉树的顺序结构二叉树的前&#xff0c;中&#xff0c;后序遍历层序遍历 1.树概念及结构 树的概念 树是一种非线性的…

数据库之DCL操作(用户、访问权限。)

DCL英文全称是Data control language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访问权限。 1.管理用户 1.1查询用户 select * from mysql.user; 其中 Host代表当前用户访问的主机&#xff0c;如果为localhost&#xff0c;仅代表只能够在当前本机访问&…

算法——链表(1)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享链表专题的第一部分 如果有不足的或者错误的请您指出! 1.链表常用技巧总结 1.1引入虚拟头结点 在力扣上,基本提供的链表题目都是"无头的",但是针对无头链表,我们最…

STM32CubeMX配置步骤详解六 —— 时钟及其它内部参数配置(1)

接前一篇文章&#xff1a;STM32CubeMX配置步骤详解五 —— 基础配置&#xff08;2&#xff09; 本文内容主要参考&#xff1a; STM32CUBEMX配置教程&#xff08;一&#xff09;基础配置-CSDN博客 野火STM32系列HAL库开发教程 —— 第12讲 STM32的复位和时钟控制&#xff08;第…

短毛猫也能吃得好!揭秘宠物店推荐猫粮的秘密!

短毛猫通常毛发短而浓密&#xff0c;性格温顺&#xff0c;容易打理。那么&#xff0c;对于我们这些爱护短毛猫的朋友们来说&#xff0c;选择一款合适的猫粮就显得尤为重要了。今天&#xff0c;我要向大家推荐一款我个人非常喜欢的猫粮——福派斯三文鱼益生菌猫粮。 &#x1f41…

通信光缆主要敷设方式有哪些

由于建设条件和建设要求不同&#xff0c;通信光缆在不同场景下会采取不同的敷设方式&#xff0c;常见敷设方式包括&#xff1a;直埋、架空、管道、水底及局内等。 1 直埋敷设 直埋&#xff0c;也就是直接埋设&#xff0c;是指把光缆直接埋设于地下土壤中的敷设方式。通常&…

考研高数(平面图形的面积,旋转体的体积)

1.平面图形的面积 纠正&#xff1a;参数方程求面积 2.旋转体的体积&#xff08;做题时&#xff0c;若以x为自变量不好计算&#xff0c;可以求反函数&#xff0c;y为自变量进行计算&#xff09;