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

P1115 最大子段和

题目描述

给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。

输入格式

第一行是一个整数,表示序列的长度 n。

第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai​。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1

7
2 -4 3 -1 2 -4 3

输出 #1

4

解决方法

使用动态规划的思想,分解成小问题。

dp[i]表示以a[i]结尾的最大的子序列的和。(包含a[i],这里是重点)

如果前面的值小于等于0,则直接dp[i] = a[i];

然后依次递推下去,每次都都结果进行更新

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 7;
int dp[MAXN], a[MAXN], n, ans;
//dp[i]是指以a[i]结尾的最大字段和int main()
{cin >> n;for (int i = 1; i <= n; i++)cin >> a[i];dp[1] = ans = a[1];//初始状态//递推for(int i = 2; i <= n; i++){if(dp[i - 1] > 0){dp[i] = dp[i - 1] + a[i];}else{dp[i] = a[i];}//dp[i] = dp[i - 1]>0? dp[i-1]+a[i] : a[i]ans = max(ans, dp[i]);}cout << ans;
}

http://www.xdnf.cn/news/10516.html

相关文章:

  • 打卡第43天
  • 【Ragflow】24.Ragflow-plus开发日志:增加分词逻辑,修复关键词检索失效问题
  • 从 AMQP 到 RabbitMQ:核心组件设计与工作原理(一)
  • [Java恶补day13] 53. 最大子数组和
  • 判断使用什么技术来爬取数据详细讲解
  • 【Redis】笔记|第5节|Redisson实现高并发分布式锁核心源码
  • 个人总结八股文之-基础篇(持续更新)
  • 汽车软件 OTA 升级技术发展现状与趋势
  • 设计模式——中介者设计模式(行为型)
  • 【Qt开发】对话框
  • 深入理解 Linux 文件系统与日志文件分析
  • NodeJS全栈WEB3面试题——P8项目实战类问题(偏全栈)
  • 安全态势感知中的告警误报思考
  • 多群组部署
  • X浏览器APP:轻巧快捷,畅享极速浏览
  • TomSolver 库 | config详解及其测试
  • ANN与SNN的那些事
  • 动态规划(10):状态压缩
  • 力扣LeetBook数组和字符串--数组简介
  • Spring Security入门:创建第一个安全REST端点项目
  • [RoarCTF 2019]Easy Calc
  • SQL 逻辑处理顺序详解
  • 第二章支线五 ·CSS炼金续章:变量与暗黑主题术
  • 放弃 tsc+nodemon 使用 tsx 构建Node 环境下 TypeScript + ESM 开发环境搭建指南
  • SpringMVC的注解
  • StarRocks物化视图
  • 可视化大屏通用模板Axure原型设计案例
  • 代码随想录60期day54
  • [leetcode] 二分算法
  • 密码学:解析Feistel网络结构及实现代码