【cpp题解】最大子数组和(53)

目录

  • 前言
  • 我的思路
    • 思路一
    • 思路二
  • 我的代码

前言

今天继续来学一学动态规划,一上来就遇到了网红题,据说是以前清北的考研题哈哈哈哈。挺难的,让我做的话,那就是双层循环暴力解,思路很巧妙,学到啦~

我的思路

思路一

设置两层暴力循环就不说了,我最开始想设置一个二维数组,把所有的子数组的和全部存进去,有点暴力,自不必说。

思路二

思路二就很巧妙了,我浅看了一眼以为我懂了,结果写出来的代码还是错的。我还是没有理解动态规划的本质,不知道写了个啥玩意,反正逻辑大大有问题。×

/*if (resArr[i - 1] + Arr[i] > resArr[i - 1]) {resArr[i] = resArr[i - 1] + Arr[i];
}
else {resArr[i] = resArr[i - 1];
}
if (resArr[i] > res) {res = resArr[i];
}*/

我们来说说正确的思路,其实最核心的点在于,我们需要找到 前一个状态和后一个状态之间链接的条件,比如我想找最长的子数组和,那么这个最长的和次长的不仅有**数值上的关系**还有**物理位置上的关系**

我们容易发现次长一定是在最长的前面,因此我们可以得知以i位置结束的子数组一定和i-1位置子数组有关。
即,如果i-1位置的子数组和大于0,那么我们i位置就可以加上i-1位置的和了(对i位置来说,我变大了有好处),如果小于0就我们就放弃这个"小拖油瓶”吧,直接令它为原数组中的值。

觉得简单吗?不,可并不。

我的代码

#include<iostream>
#include<vector>
using namespace std;class solution {
public:int max_subArr_sum(vector<int> Arr) {int res= Arr[0];vector<int> resArr(Arr.size());resArr[0] = res;for (int i = 1; i < Arr.size(); i++) {/*if (resArr[i - 1] + Arr[i] > resArr[i - 1]) {resArr[i] = resArr[i - 1] + Arr[i];}else {resArr[i] = resArr[i - 1];}if (resArr[i] > res) {res = resArr[i];}*/if (resArr[i - 1] > 0) {resArr[i] = resArr[i - 1] + Arr[i];}else {resArr[i] = Arr[i];}if (resArr[i] > res) {res = resArr[i];}}return res;}
};int main() {solution s;vector<int> Arr = { 1,2,3,-1,2,-1,20,-20,-10 };int x=s.max_subArr_sum(Arr);cout << x << endl;
}

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

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

相关文章

yaml配置文件的在深度学习中的简单应用

1 .创作灵感 小伙伴们再阅读深度学习模型的代码的时候&#xff0c;经常会遇到yaml格式的配置文件。用这个配置文件是因为我们在训练模型的时候会涉及很多的参数&#xff0c;如果这些参数东一个&#xff0c;西一个&#xff0c;我们调起来的时候就会很不方便&#xff0c;所以用y…

数字电商人才孵化基地授牌仪式在天府锋巢直播产业基地隆重举行!

2024年4月25日&#xff0c;数字电商人才孵化基地授牌仪式在天府锋巢直播产业基地隆重举行。此次仪式不仅标志着德商锋巢与天府新区信息技术职业学院的紧密合作正式启动&#xff0c;更意味着双方在数字电商领域的人才培养和产业发展上迈出了坚实的步伐。 仪式现场&#xff0c;德…

WiFine通信与Wi-sun通信对比

调制速率 WiFine通信&#xff1a;(G)FSK 50Kbps~500Kbps &#xff1b;LoRa 5Kbps~37.5Kbps Wi-Sun通信&#xff1a;(G)FSK 50Kbps~300Kbps &#xff1b;QPSK/OFDM 计划中… 2、协议简介 WiFine通信&#xff1a;为低成本、低功耗、移动设备倾力打造 的轻量级、分布式无线移动…

初始C++(二)

前言&#xff1a; C相对于C语言还有很多区别&#xff0c;接下来我们继续介绍 函数重载&#xff1a; 很好理解&#xff0c;就是Java中的函数重载。C加了函数的修饰&#xff0c;通过函数修饰规则去找。C语言是直接通过函数名查找&#xff0c;C是通过修饰后的函数名去查找。 引用…

Java 运行的底层原理

Java是一种跨平台的编程语言&#xff0c;其底层原理涉及到了多个方面&#xff0c;包括Java虚拟机&#xff08;JVM&#xff09;、字节码、类加载机制、垃圾回收器等。让我们逐一深入了解Java运行的底层原理。 1. Java虚拟机&#xff08;JVM&#xff09; Java虚拟机是Java程序运…

pandas高级操作--复杂查询

pandas高级操作 一、复杂查询1.1 逻辑筛选数据1.2 函数筛选1.3 isin()函数1.4 查询df.query()1.5 df.filter()对行名和列名进行筛选 一、复杂查询 1.1 逻辑筛选数据 以下是切片&#xff08;[]&#xff09;的一些逻辑筛选示例&#xff1a; df[df[Q1] 8] # Q1等于8 df[~(d…

Python进行excel处理-01

最近干采购&#xff0c;每个月要对供应商的对账单&#xff0c;对对应的采购订单号和物料编号的价格和数量&#xff0c;是不是和物料管控总表里面的价格数量是不是一致&#xff0c;于是写了一个代码。 从总表里面找到&#xff0c;对账单里对应采购订单和物料编码的数据&#xf…

从代码到洞察:使用API接口深入分析商品详情数据

在电子商务的世界中&#xff0c;商品详情数据是企业做出明智决策的基石。API&#xff08;应用程序编程接口&#xff09;提供了一种强大的方式来获取这些数据&#xff0c;不仅可以简化数据获取过程&#xff0c;还可以为深入分析和业务洞察提供丰富的信息。本文将探讨如何使用API…

5W 1.5KVDC 隔离 宽电压输入 DC/DC 电源模块——TP05DB 系列

TP05DB系列电源模块额定输出功率为5W&#xff0c;应用于2:1及4:1电压输入范围 4.5V-9V、9V-18V、18V-36V、36V-72V、9V-36V和18V-72V&#xff0c;40-160VDC的输入电压环境&#xff0c;输出电压精度可达1%&#xff0c;具有输出过流保护等功能。可广泛应用于通信、铁路、自动化以…

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台

Java毕业设计 基于SpringBoot vue社区智慧养老监护管理平台 SpringBoot 社区智慧养老监护管理平台 功能介绍 登录注册 个人中心 修改密码 个人信息 房间信息管理 房间入住信息管理 反馈信息管理 留言管理 老人信息管理 公告管理 物资申请管理 管理员管理 护工管理 体检员管理…

2024-05-08 postgres-火山模型-执行-记录

摘要: 2024-05-08 postgres-火山模型-执行-记录 上下文: 2024-05-08 postgres-调试及分析-记录-CSDN博客 火山模型: 数据流是在查询树上&#xff0c;自上而下进行拉取&#xff0c;由上而下的调用。树本身就表明了数据的流动。每次执行一个元组&#xff0c;也就类似于迭代器的…

[C++][数据结构]AVL树插入的模拟实现

前言 紧接着上一篇文章&#xff0c;我们来模拟实现一下set的底层结构 引入 对于BSTree&#xff0c;虽然可以缩短查找的效率&#xff0c;但如果数据有序它将退化为单支树 我们可以用AVL树来解决这个问题。 概念 AVL树&#xff1a; 它的每个结点的左右子树高度之差的绝对值…

Tuxera NTFS for Mac Mac用户无缝地读写NTFS格式的硬盘和U盘

在数字化时代&#xff0c;数据交换和共享变得日益重要。然而&#xff0c;对于Mac用户来说&#xff0c;与Windows系统之间的文件交换可能会遇到一些挑战。这是因为Mac OS默认不支持Windows常用的NTFS文件系统。幸运的是&#xff0c;Tuxera NTFS for Mac为我们提供了一个优雅的解…

在线知识付费源码系统,教育培训机构的课程顾问要具备啥能力?

做一个培训机构是需要一个优秀的团队&#xff0c;机构是需要有很多不同的岗位组成的&#xff0c;课程顾问就是机构里面很重要的一个岗位&#xff0c;机构想要发展就需要课程顾问工作做的好&#xff0c;那机构课程顾问需要有什么能力&#xff1f; 作为一名合格课程顾问&#xff…

一文盘点 Partisia Blockchain 生态 4 月市场进展

Partisia Blockchain 是一个以高迸发、隐私、高度可互操作性、可拓展为特性的 Layer1 网络。通过将 MPC 技术方案引入到区块链系统中&#xff0c;以零知识证明&#xff08;ZK&#xff09;技术和多方计算&#xff08;MPC&#xff09;为基础&#xff0c;共同保障在不影响网络完整…

【微积分听课笔记】全微分,二元极值,Double Integral

6.6 二元函数的极值_哔哩哔哩_bilibili 此笔记为听课笔记&#xff0c;宋浩老师微积分~ 最近诸事缠身&#xff0c;会有种会不会只做一件事好些。实际上&#xff0c;关键在于动力&#xff0c;我不可能每次都准备充分。动力&#xff0c;分配&#xff0c;这是目前进入大学我正在学…

Jetpack Compose三:主题和基础控件的使用

设置主题 与Android View的主题定义方式不同&#xff0c;Jetpack Compose中的主题由许多较低级别的结构体和相关API组成&#xff0c;它们包括颜色、排版和形状属性。 Theme.kt控制工程的主题&#xff0c;它是一个可组合的Compose函数 最后主题函数ComposeStudyTheme的相关设置…

分布式数据库有哪几种

数据库的发展从早期的单机数据库&#xff0c;到现在的分布式数据库。在单机数据库时代&#xff0c;所有的数据都存储在单机中&#xff0c;随着计算机技术的发展&#xff0c;开始出现了多台计算机联合处理数据的需求&#xff0c;从而诞生了分布式数据库。 分布式数据库是将多个…

Spring中FactoryBean的作用和实现原理

Spring中FactoryBean的作用和实现原理 BeanFactory与FactoryBean&#xff0c;相信很多刚翻看Spring源码的同学跟我一样很好奇这俩货怎么长得这么像&#xff0c;分别都是干啥用的。 BeanFactory是Spring中Bean工厂的顶层接口&#xff0c;也是我们常说的SpringIOC容器&#xff…

Pytorch学习笔记——卷积操作

一、认识卷积操作 卷积操作是一种数学运算&#xff0c;它涉及两个函数&#xff1a;输入函数&#xff08;通常是图像&#xff09;和卷积核&#xff08;也称为滤波器或特征检测器&#xff09;。卷积核在输入函数上滑动&#xff0c;将核中的每个元素与其覆盖的输入函数区域中的对应…