【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.rhkb.cn/news/299605.html

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

相关文章

短视频素材去哪里找?短视频素材app排名

继续探索世界各地优质的视频素材网站&#xff0c;为您的视频创作注入新的活力和灵感。以下网站精选旨在提供多样化、高质量的视频资源&#xff0c;帮助您的作品更加出色和引人注目。 1&#xff0c;蛙学府&#xff08;中国&#xff09; 精选高质量视频素材&#xff0c;为创意项…

docker安装sentinel

文章目录 前言安装docker指令安装制作docker-compose.yaml文件 查看网站 前言 Sentinel 是阿里巴巴开源的一款轻量级流量控制和熔断降级工具&#xff0c;可用于保护分布式系统中的服务。它可以帮助开发人员解决在分布式架构中面临的流量管理、服务保护、性能优化等问题。 安装…

linux之文件系统、inode和动静态库制作和发布

一、背景 1.没有被打开的文件都在磁盘上 --- 磁盘级文件 2.对磁盘级别的文件&#xff0c;我们的侧重点 单个文件角度 -- 这个文件在哪里&#xff0c;有多大&#xff0c;其他属性是什么&#xff1f; 站在系统角度 -- 一共有多少文件&#xff1f;各自属性在哪里&#xff1f…

GitLab 新项目创建和使用

一、下载 Git 客户端 Git - Downloading Package (git-scm.com) 二、打开 Git Bash 配置 gitlab 账户 下面的信息可以登录gitlab查看 git config --global user.name "yourname"git config --global user.email "youremailXX.com" 生成ssh_key ssh-k…

【Spring】AOP——使用@around实现面向切面的方法增强

工作业务中&#xff0c;有大量分布式加锁的重复代码&#xff0c;存在两个问题&#xff0c;一是代码重复率高&#xff0c;二是容易产生霰弹式修改&#xff0c;使用注解和AOP可以实现代码复用&#xff0c;简化分布式锁加锁和解锁流程。 around注解是AspectJ框架提供的&#xff0c…

leetcode 13. 罗马数字转整数

代码&#xff1a; class Solution(object):def romanToInt(self, s):""":type s: str:rtype: int"""dict1 {I:1,V:5,X:10,L:50,C:100,D:500,M:1000}nums 0t len(s)i 0while i<t :if s[i]I:if i1 t:numsdict1.get(s[i])i1else:if s[i1] V…

关于C#操作SQLite数据库的一些函数封装

主要功能&#xff1a;增删改查、自定义SQL执行、批量执行&#xff08;事务&#xff09;、防SQL注入、异常处理 1.NuGet中安装System.Data.SQLite 2.SQLiteHelper的封装&#xff1a; using System; using System.Collections.Generic; using System.Data.SQLite; using System.…

【云计算】云数据中心网络(一):VPC

云数据中心网络&#xff08;一&#xff09;&#xff1a;VPC 1.什么是 VPC2.VPC 的组成2.1 虚拟交换机2.2 虚拟路由器 3.VPC 网络规划3.1 VPC 数量规划3.2 交换机数量规划3.3 地址空间规划3.4 不同规模企业地址空间规划实践 4.VPC 网络高可靠设计4.1 单地域单可用区部署4.2 单地…

如何配置vite的proxy

1.前言 vite项目&#xff0c;本地开发环境可以通过配置proxy代理实现跨域请求。但是生产环境&#xff0c;该配置不生效&#xff0c;一般使用 nginx 转发&#xff0c;或者后端配置cors 2.解释 server: {port: 9000,proxy: { // 本地开发环境通过代理实现跨域&#xff0c;生产…

【ARM 嵌入式 C 常用数据结构系列 25.1 -- linux 双向链表 list_head 使用详细介绍】

请阅读【嵌入式开发学习必备专栏 】 文章目录 内核双向链表双向链表的数据结构初始化双向链表在双向链表中添加元素遍历双向链表链表使用示例注意事项 内核双向链表 在Linux内核中&#xff0c;双向链表是一种广泛使用的数据结构&#xff0c;允许从任意节点高效地进行前向或后向…

大型语言模型(LLMs)面试常见问题解析

概述 这篇文章[1]是关于大型语言模型&#xff08;LLMs&#xff09;的面试问题和答案&#xff0c;旨在帮助读者准备相关职位的面试。 token&#xff1f; 在大型语言模型中&#xff0c;token 指的是什么&#xff1f; 分词&#xff08;Tokenization&#xff09;&#xff1a;可以将…

ebpf+perfetto实现调度延迟记录与展示

1.背景 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.我们…

论文阅读——MVDiffusion

MVDiffusion: Enabling Holistic Multi-view Image Generation with Correspondence-Aware Diffusion 文生图模型 用于根据给定像素到像素对应关系的文本提示生成一致的多视图图像。 MVDiffusion 会在给定任意每个视图文本的情况下合成高分辨率真实感全景图像&#xff0c;或将…

LABVIEW--正弦+高斯噪声信号及滤波

前面板信号 后面板 LABVIEW源程序链接&#xff1a;https://pan.baidu.com/s/11B-75i4fHZwWQyjxn9yCyQ?pwd7tfj 提取码&#xff1a;7tfj

STM32 M3内核寄存器概念

内容主要来自<<M3内核权威指南>> 汇编程序中的最低有效位&#xff08;Least Significant Bit&#xff09;。LSB是二进制数中最右边的位&#xff0c;它代表了数值中的最小单位。在汇编程序中&#xff0c;LSB通常用于表示数据的最小精度或者作为标志位。 ---------…

Linux-exec函数族和system函数

参考资料&#xff1a;《Linux环境编程&#xff1a;从应用到内核》 execve函数 execve函数接口如下&#xff1a; #include <unistd.h>int execve(const char *filename, char *const argv[],char *const envp[]);参数&#xff1a; 第一个参数&#xff1a;filename是可执…

【unity】【C#】延时调用(协程)和场景管理

文章目录 什么是协程协程的应用 - IEnumerator如何控制协程的暂停协程的另一种写法 - Invoke场景管理 多看代码块中的注释 什么是协程 A coroutine alows vou to spreacwhere it left off on the following anc return control toolinencoeframe. 协程允许您将任务分布在多个帧…

数据结构和算法:分治

分治算法 分治&#xff08;divide and conquer&#xff09;&#xff0c;全称分而治之&#xff0c;是一种非常重要且常见的算法策略。分治通常基于递归实现&#xff0c;包括“分”和“治”两个步骤。 1.分&#xff08;划分阶段&#xff09;&#xff1a;递归地将原问题分解为两个…

爬虫部署平台crawlab使用说明

Crawlab 是一个基于 Go 语言的分布式网络爬虫管理平台&#xff0c;它支持 Python、Node.js、Jar、EXE 等多种类型的爬虫。 Crawlab 提供了一个可视化的界面&#xff0c;并且可以通过简单的配置来管理和监控爬虫程序。 以下是 Crawlab 的一些主要优点&#xff1a; 集中管理&am…

数据库不用mmap

你确定你想用 MMAP 实现数据库么&#xff1f;_哔哩哔哩_bilibili MMAP 的随机读与顺序读的性能表现不好&#xff0c;以及对于写主要是不可控的刷入时机以及代码冗余&#xff0c;所以 MMAP 不适合在数据库中使用。 mmap是posix系统调用&#xff0c;它提供由操作系统管理内存映…