当前位置: 首页 > news >正文

1267:【例9.11】01背包问题(信奥一本通)

题目链接:信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)

今天刚看完卡尔大哥讲解的01背包,今天手敲了一遍,还是很多问题,只能说自己还是刷题太少或者说是没理解到位。

代码如下

# include <iostream>
# include <cstring>
using namespace std;
int dp[1010][1010]; //1.dp[i][j] 表示着在有限的容量内使背包里面物品价值总和最大 
// 2.dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + c[i])
int w[200], c[200];
int main()
{int m, n; //w[i]是重量, c[i]是物品的价值 cin>>m>>n;memset(dp, 0, sizeof(dp));for(int i = 1; i <= n; i++){cin>>w[i]>>c[i];}for(int j = w[0]; j <= m; j++)  //3.初始化行和列 {dp[0][j] = c[0];}for(int j = 1; j <= m; j++) //4.遍历顺序{for(int i = 1; i <= n; i++){if(w[i] > j){dp[i][j] = dp[i - 1][j];}else{dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + c[i]);}}}//for(int i = 0; i <= n; i++) //打印二维dp数组//{//   for(int j = 0; j <= m; j++)//    {//        cout<<dp[i][j]<<" ";//    }//    cout<<endl;//}cout<<dp[n][m]<<endl;  //打印dp结果,如果错误的话,需要自己打印二维dp,如上return 0;
}

代码讲解:只讲核心。先确定dp[i][j]的含义,正如我解释所说的,dp[i][j]表示着在有限的容量内使背包里面物品价值总和最大。然后就根据这个含义定义好dp[i][j]的状态转移方程,dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + c[i]),为什么是max而不是min,也很好理解,也就是我们需要求最大的价值,所以就要用max。其实是初始化,就是对于首行和首列初始化,为什么要初始化这两个,因为后面的dp是从上面dp[i - 1][j]和左上角dp[i - 1][j - x]来的,然后就是遍历顺序,这个遍历顺序一定要搞清楚顺序,为什么第一层是j而不是i,因为是先遍历背包,在遍历物品(当然,你先遍历物品,在遍历背包是一样的)所以dp[i][j]后面的[j]也就是背包(列),所以先遍历j,最后输出的是dp[n][m],值得注意的是,我们最好把数组定义为局部变量,这样自动初始化为0,要当作成员变量的话,如果你没初始化,那你的数组就是一串乱值。

感悟:因为以前看过信奥这个团队讲解的这个题目,我今天又按照自己的思路编写了这个代码,实际上我还发现这个团队有一点没讲到位,就是初始化这一知识点,那个团队没有写这个初始化代码,虽说这个题目不需要这一段代码也能过,但是也是很必要写上的,毕竟对于我们这种开始学习动态规划的小白来说,最好是写上。

相关文章:

1267:【例9.11】01背包问题(信奥一本通)

题目链接&#xff1a;信息学奥赛一本通&#xff08;C版&#xff09;在线评测系统 (ssoier.cn) 今天刚看完卡尔大哥讲解的01背包&#xff0c;今天手敲了一遍&#xff0c;还是很多问题&#xff0c;只能说自己还是刷题太少或者说是没理解到位。 代码如下 # include <iostrea…...

信息化时代下的高标准农田灌区:变革与机遇并存

在信息化时代的浪潮中&#xff0c;高标准农田灌区的建设与管理正经历着前所未有的变革&#xff0c;这既是一个挑战重重的历程&#xff0c;也孕育着无限的发展机遇。随着物联网、大数据、云计算以及人工智能等先进技术的飞速发展与融合应用&#xff0c;传统的农田灌溉模式正在被…...

【系统架构设计师-2013年真题】案例分析-答案及详解

更多内容请见: 备考系统架构设计师-核心总结索引 文章目录 【材料1】问题1问题2【材料2】问题1问题2问题3问题4【材料3】问题1问题2问题3【材料4】问题1问题2问题3【材料5】问题1问题2问题3【材料1】 阅读以下关于企业应用系统集成架构设计的说明,在答题纸上回答问题1和问题…...

git merge如何忽略部分路径

参考文章&#xff1a; Git - Ignore files during merge How to make git ignore a directory while merging 在进行git merge时&#xff0c;想忽略部分路径的回合。 如&#xff1a;将develop分支merge回master&#xff0c;但是忽略/path/to/folder路径 操作&#xff1a; gi…...

spring boot导入多个配置文件

1、简介 Spring Boot从2.4.x版本开始支持了导入文件的方式来加载配置参数&#xff0c;与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多。 我们只需要在application.properties/application.yml配置文件中通过spring.config.…...

硬件工程师笔试面试——无线通讯模块

目录 15、无线通讯模块 15.1 基础 无线通讯模块实物图 15.1.1 概念 15.1.2 常见的无线通讯模块及其特点 15.1.3 无线通讯模块参数 15.1.4 无线通讯模块工作原理 15.2 相关问题 15.2.1 如何根据项目需求选择合适的无线通讯模块? 15.2.2 无线通讯模块的安全性如何,如…...

开源PHP免费家谱应用Webtrees简介

1. 介绍 Webtrees是一个开源的在线家谱管理系统&#xff0c;支持 GEDCOM 格式&#xff0c;允许用户协作管理家谱数据。它是免费的&#xff0c;并且功能强大。Webtrees有大量活跃用户参与的交流社区&#xff0c;在全世界约有6800个服务器。这是一个服务器应用&#xff0c;可以多…...

kafka消息发送几种方式

同步发送 or 异步发送 消息发送根据是否需要处理发送的结果分为同步发送、异步发送。 同步发送&#xff1a;等待发送结果返回&#xff0c;这种方式是可靠的&#xff0c;因为异常能及时处理&#xff0c;但同步发送需要阻塞等待一条消息发送完才处理下一条&#xff0c;吞吐量差。…...

K1计划100%收购 MariaDB; TDSQL成为腾讯云核心战略产品; Oracle@AWS/Google/Azure发布

重要更新 1. 腾讯全球数字生态大会与9月5日-6日举行&#xff0c;发布“5T”战略&#xff0c;包括TDSQL、TencentOS、TCE&#xff08;专有云 &#xff09;、TBDS&#xff08;大数据&#xff09;、TI &#xff08;人工智能开发平台&#xff09;等 ( [2] ) ; 并正式向原子开源基金…...

Kyutai 开源对话模型 Moshi;李飞飞空间智能公司已筹集超过 2.3 亿美元丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。 我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、…...

Go语言的io输入输出流

Go语言的输入输出流不如其他语言那么直观&#xff0c;由于是通过实现接口方法的隐式继承所以比较抽象&#xff0c;今天具体介绍一下go语言的输入输出流。 go语言输入输出在io库中&#xff0c;使用Reader接口&#xff0c;如下&#xff1a; type Reader interface {Read(p []by…...

表单里面input的type属性值有哪些?

在HTML的表单&#xff08;<form>&#xff09;中&#xff0c;<input>元素是一个常用的元素&#xff0c;用于收集用户输入。每个<input>元素都包含一个type属性&#xff0c;用于定义输入字段的类型。以下是<input>元素中常见的type属性值&#xff1a; 1…...

【Redis】之Geo

概述 Geo就是Geolocation的简写形式&#xff0c;代表地理坐标。在Redis中&#xff0c;构造了能够存储地址坐标信息的一种数据结构&#xff0c;帮助我们根据经纬度来检索数据。 命令行操作方法 GEOADD 可以用来添加一个或者多个地理坐标。 GEODIST 返回一个key中两个成员之…...

常用的k8s容器网络模式有哪些?

常用的k8s容器网络模式包括Bridge模式、Host模式、Overlay模式、Flannel模式、CNI&#xff08;ContainerNetworkInterface&#xff09;模式。K8s的容器网络模式多种多样&#xff0c;每种模式都有其特点和适用场景。Bridge模式适用于简单的容器通信场景&#xff1b;Host模式适用…...

4位整数的数位和

输入一个4位数的整数&#xff0c;求其各数位上的数字之和。 输入格式: 输入在一行中给出1个4位的正整数n。 输出格式: 在一行中输出n的各数位上的数字之和。 输入样例: 1234输出样例: 10 代码如下&#xff1a; #include<stdio.h> int main() {int n;int a,b,c,d;scanf(&…...

XHTML学习

XHTML学习 1.XHTML 简介2.XHTML - 元素标准3.XHTML - 属性标准 1.XHTML 简介 XHTML是一个严格遵循 XML语法规则的 HTML 标准。它是 HTML4 的一种重构版本&#xff0c;结合了 HTML 的灵活性和 XML 的严格性&#xff0c;如今XHTML已经得到了所有主流浏览器的支持 与 HTML 相比最…...

KTH7823——16 位高精度低延时霍尔磁编码器可编程 ABZ 和 PWM 输出模式角度传感器

KTH7823 是一款高精度绝对角度霍尔传感器芯片&#xff0c;最高 16 位分辨率绝对角度输出&#xff0c;可 实现在轴向和离轴场合下的无接触式磁场角度测量。不论转速范围在 0-120000rpm 之间&#xff0c; KTH7823 都能快速准确地输出角度信息&#xff0c;适用于需要精准角…...

JDBC笔记

文章目录 准备MySQL数据的建立和建表 idea 建工程和模块设置属性配置文件编写JDBC代码URL的设置JDBC 代码配置文件 准备MySQL 数据的建立和建表 idea 建工程和模块 设置属性配置文件 编写JDBC代码 URL的设置 JDBC 代码 package com.yanyu;import java.sql.*; import java.util…...

小众语言ruby在苹果中的初步应用

前言 感觉Ruby在苹果系统中充当一种脚本语言来使用。 1、直接输入ruby没有反应 2、可显示结果的命令 ruby -e "puts Goodbye, cruel world!" 效果如下图&#xff1a; 说明苹果系统中ruby已经安装完毕&#xff0c;或者就是自带的。 3、编辑运行第一个ruby程序 输入…...

Nature: 一种基于宏基因组序列空间生成无参考的蛋白质家族的计算方法

通过全局宏基因组学揭示功能性暗物质 Unraveling the functional dark matter through global metagenomics Article, 2023-10-11 Nature [IF: 64.8] DOI: https://doi.org/10.1038/s41586-023-06583-7 原文链接&#xff1a;https://www.nature.com/articles/s41586-023-06…...

ParaView时间戳设置全攻略:从基础标注到自定义格式(5.8.0实测)

ParaView时间戳设置全攻略&#xff1a;从基础标注到自定义格式&#xff08;5.8.0实测&#xff09; 在科学可视化领域&#xff0c;时间戳不仅是数据演变的见证者&#xff0c;更是研究成果呈现的专业语言。ParaView作为开源可视化工具链的标杆&#xff0c;其时间标注功能在学术论…...

Win10系统清理避坑指南:你的BAT脚本真的安全吗?盘点那些不能乱删的文件

Win10系统清理避坑指南&#xff1a;BAT脚本安全操作手册每次看到那些号称"一键清理系统垃圾"的BAT脚本在技术论坛被疯狂转发&#xff0c;我的工程师朋友老张就会忍不住摇头。上周他刚帮一位设计师修复了崩溃的Photoshop——原因正是某个清理脚本删除了Adobe的临时工作…...

一次搞懂内存取证:用Volatility3和Cobalt Strike分析工具复现VNCTF‘来一把紧张刺激的CS’

实战内存取证&#xff1a;从Volatility3到Cobalt Strike信标分析全解析 在网络安全事件响应中&#xff0c;内存取证往往是发现高级威胁的最后一道防线。当攻击者使用文件无落地的技术时&#xff0c;传统的磁盘取证可能一无所获&#xff0c;而内存中却保留着攻击行为的完整痕迹。…...

3步解锁网易云音乐NCM加密:让音乐真正属于你

3步解锁网易云音乐NCM加密&#xff1a;让音乐真正属于你 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为下载的网易云音乐只能在特定客户端播放而烦恼吗&#xff1f;当你精心收藏的歌曲被NCM格式"锁"在单一平台时&a…...

CentOS服务器上VNC连接失败?手把手教你排查并修复个人端口问题(附重启命令)

CentOS服务器VNC连接故障深度排查指南&#xff1a;从原理到实战当你在深夜赶项目时&#xff0c;突然发现VNC连接不上服务器&#xff0c;那种焦虑感我深有体会。去年参与半导体器件仿真项目时&#xff0c;我也曾被这个问题困扰整整两天。本文将分享一套经过实战检验的排查方法论…...

FairyGUI Unity鼠标悬停与点击对象获取原理与实战

1. 这不是“加个OnMouseEnter就能用”的事&#xff1a;FairyGUI在Unity中处理鼠标交互的真实困境很多人第一次在Unity里集成FairyGUI&#xff0c;想实现“鼠标悬停显示提示”或“点击高亮当前按钮”&#xff0c;下意识就去翻Unity的MonoBehaviour文档&#xff0c;找OnMouseEnte…...

企业内统一API网关与Taotoken聚合平台对接方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内统一API网关与Taotoken聚合平台对接方案 在推进AI应用落地的过程中&#xff0c;许多中大型企业面临一个共同挑战&#xff1a…...

CUDA并行计算与FSR框架优化实践

1. CUDA并行计算与FSR框架概述在GPU加速计算领域&#xff0c;CUDA&#xff08;Compute Unified Device Architecture&#xff09;作为NVIDIA推出的并行计算平台和编程模型&#xff0c;已经成为高性能计算的事实标准。其核心设计理念是将计算任务分解为网格&#xff08;Grid&…...

03 - 变量与数据类型

03 - 变量与数据类型 变量是编程里最基础的概念&#xff0c;相当于你往电脑里存东西的"容器"。这章我们把变量的命名规则、Python 的几种基本数据类型都过一遍。 变量是什么 说白了&#xff0c;变量就是一个有名字的盒子。你往里面放个东西&#xff0c;以后想用这个…...

国内大学生常用的AI写作辅助平台有哪些?

国内高校学生常用的 AI 写作辅助平台&#xff0c;以本土化全流程工具为主&#xff0c;结合通用大模型与专项功能模块&#xff0c;覆盖选题构思、大纲搭建、初稿撰写、语言润色、降重处理、查重检测及格式排版等关键环节&#xff0c;以下是主流平台详解与对比&#xff1a; 一、本…...