一个数组有 N 个元素,求连续子数组的最大和(动态规划问题)

2023-11-20

该题题目如上,例如【-1,2,1】连续的最大子数组为【2,1】,和为3;

题目要求我们输入第一个数为数组元素的个数,然后后面为我们需要输入的元素。

遇到这一个题,我们首先可以这样考虑,设置一个sum和result,sum是用来每次加新的元素,result是最后得出最大的子数组和。

我们可以每次给sum中添加新的元素,从第一个开始向后,如果遇到和比result大的时候,就把sum的值赋给result,小于的话则继续向后寻找,当然我们也考虑到了如果数组中的数字为负数的时候,每次加新的数字之后,会判断sum是否为正,如果不为正数,就将sum置为0,那么在下一次加的时候,前面的负数不会考虑,因为越加会越小,但是我们还是会比较result跟sum的大小,因为即便为负数,也会存在大小问题,所以这样的话我们可以比较后面的子数组与前面的大小比较,最后找到最大值。

#include <iostream>
#include<vector>
using namespace std; 
int main() 
{ 
int size; 
cin >> size;
vector<int> nums(size);
for(size_t i = 0; i < size; ++i)
	cin >> nums[i]; 
int result = nums[0]; 
int  sum = 0;
for (int i = 0; i < nums.size(); i++) { // 计算到num[i]的子数组的最大和 
	sum +=nums[i]; 
	if(sum > result) 
		result = sum;
    if (sum < 0) 
	sum = 0;
     
}
cout << result << endl;
return 0; 
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个数组有 N 个元素,求连续子数组的最大和(动态规划问题) 的相关文章

  • 编程艺术 - 第二章 、俩个字符串是否包含问题以及扩展

    1 题目 假设这有一个各种字母组成的字符串 假设这还有另外一个字符串 而且这个字符串里的字 母数相对少一些 从算法是讲 什么方法能最快的查出所有小字符串里的字母在大字符串里 都有 比如 如果是下面两个字符串 String 1 ABCDEFG
  • 01背包--数组能否分成两个和相同的数组

    1 2 6 3 可以分成 1 2 3 和 6 思路 此题可以用0 1背包问题来解决 分成的两个数组之和 一定为整个数组之和的一半 所以将背包容量设为初始数组之和的一半即可 最后在判断背包所装的容量是不是整个数组之和的一半 关于01背包问题的
  • LeetCode-1237. 找出给定方程的正整数解【双指针,二分查找】

    LeetCode 1237 找出给定方程的正整数解 双指针 二分查找 题目描述 解题思路一 双指针 首先我们不管f是什么 即function id等于什么不管 但是我们可以调用customfunction中的f函数 然后我们遍历x y 1
  • 求当前数组中,最大值减最小值等于sum的数组个数

    分析 应用双端队列 构造一个可以动态的求出当前数组最大值的容器 qmax 同上在构造一个qmin 从left right等于开始 如果当前区间的qmax qmin符合条件 right向右扩充 当不符合条件时 计算上一步符合条件的所有子数组个
  • 算法—打印回形数

    题目 题目描述 回形数是一个矩阵输出 从矩阵的左上角往右开始打印数字0 遇到矩阵边界时 顺时针90方向继续打印 并数字增长1 如此类推直到把矩阵填满 输入一个整形宽和高单位 每输出一个数字 占用1单位宽高空间 根据入参打印出对应的回形数 输
  • 【Leetcode041】 最大子数组和

    53 最大子数组和 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组 子数组最少包含一个元素 返回其最大和 子数组 是数组中的一个连续部分 示例 1 输入 nums 2 1 3 4 1 2 1 5 4 输出 6 解释 连续子数
  • 【现代谜题】晚上有四个人要过桥,只有一个手电筒,每次过桥都需要手电筒,每次最多可同时过两个人,其中甲过桥要1分钟,乙要2分钟,丙要5分钟,丁要10分钟。求最短的过桥时间。

    文章目录 题目 一 思路 方法一 方法二 二 代码 测试数据 题目 晚上有四个人要过桥 只有一个手电筒 每次过桥都需要手电筒 每次最多可同时过两个人 其中甲过桥要1分钟 乙要2分钟 丙要5分钟 丁要10分钟 求最短的过桥时间 一 思路 首先
  • 华为OD机试真题-单词倒序【2023.Q1】

    题目描述 题目描述 输入单行英文句子 里面包含英文字母 空格以及 三种标点符号 请将句子内每个单词进行倒序 并输出倒序后的语句 输入描述 输入字符串S S的长度1 N 100 输出描述 输出逆序后的字符串 补充说明 标点符号左右的空格 gt
  • JAVA求解【乱序整数序列两数之和绝对值最小】

    题目 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元素不
  • 回文数的判断

    文章目录 题目 一 方案一 二 方案二 三 方案三 四 方案四 题目 判断一个整数是否是回文数 回文数是指正序 从左向右 和倒序 从右向左 读都是一样的整数 提示 下面案例可供参考 一 方案一 public boolean palindro
  • 十进制转换为二进制代码

    十进制转换为二进制代码 十进制转换为二进制 十进制如何转二进制 将该数字不断除以2直到商为零 然后将余数由下至上依次写出 即可得到该数字的二进制表示 以将数字21转化为二进制为例 当商为零时 将余数由下至上依次写出 即为21的二进制表示 i
  • 1061 判断题

    判断题的评判很简单 本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分 输入格式 输入在第一行给出两个不超过 100 的正整数 N 和 M 分别是学生人数和判断题数量 第二行给出 M 个不超过 5 的正整数 是每道题的满分值 第
  • 华为OD机试真题-施肥问题【2023Q1】

    题目内容 解题思路 首先需要计算每个果园的施肥时间 即果园面积除以施肥机能效 然后找到最小的施肥机能效 保证施肥任务能在规定时间内完成 如果施肥天数小于果园数量 则无法完成施肥任务 返回 1 如果施肥天数等于果园数量 则直接返回最大果园面积
  • LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】

    LeetCode 2335 装满杯子需要的最短总时长 贪心 数学 题目描述 解题思路一 其实像一道数学题目 假设三个杯子x lt y lt z先分两种情况 第一种 x y lt z 答案直接是最大的z 第二种 x y gt z 先将x与y互
  • LeetCode-1780. 判断一个数字是否可以表示成三的幂的和【数学】

    LeetCode 1780 判断一个数字是否可以表示成三的幂的和 数学 题目描述 解题思路一 将n转为3进制 如果没有2出现那么返回true 例如12 110 3 返回true 21 210 3 返回false 解题思路二 0 解题思路三
  • Leetcode 第 43 场双周赛题解(Python)

    Leetcode 第 43 场双周赛题解 周赛日期 2020 01 09 题目1 1716 计算力扣银行的钱 难度 简单 Hercy 想要为购买第一辆车存钱 他 每天 都往力扣银行里存钱 最开始 他在周一的时候存入 1 块钱 从周二到周日
  • LeetCode-1827. 最少操作使数组递增【贪心,数组】

    LeetCode 1827 最少操作使数组递增 贪心 数组 题目描述 解题思路一 简单暴力 解题思路二 优化1 ans是操作数 mx是当前最大元素 mx无论如何会依次递增 解题思路三 优化2 遇到小的数就pre 1 否则变为num 题目描述
  • F - LIS on Tree

    F LIS on Tree atcoder jp 问题描述 树上LIS 普通LIS O n n void solve int n cin gt gt n vector
  • LeetCode-283. 移动零【数组,双指针】

    LeetCode 283 移动零 数组 双指针 题目描述 解题思路一 首先想到的是双指针 但是不行 非零元素的位置会改变 解题思路二 改进的是每次从当前0元素的位置取后面第一个非0元素替换过来 替换之和那个break非常重要 解题思路三 优
  • 华为OD机试真题-优秀学员统计 【2023.Q1】

    题目描述 公司某部门软件教导团正在组织新员工每日打卡学习活动 他们开展这项学习活动已经一个月了 所以想统计下这个月优秀的打卡员工 每个员工会对应一个id 每天的打卡记录记录当天打卡员工的id集合 一共30天 请你实现代码帮助统计出打卡次数t

随机推荐

  • 宿舍报修平台的小程序实现

    5 26 修改内容 加入了项目结构化需求分析 6 2 修改内容 加入了产品设计原型图以及产品项目进度 6 9 修改内容 加入了用例图 静态UML图 动态UML图 目录 项目背景 需求调查 数据采样 项目目标 项目前景 项目评估 项目范围 项
  • Solving environment: failed with initial frozen solve. Retrying with flexible solve.

    使用conda安装pytorch老是失败 于是使用以下命令安装pytorch conda install pytorch torchvision cudatoolkit 10 1 下载成功
  • 几种表面缺陷检测数据集

    2020 05 23更新 在github上创建了一个缺陷数据的项目 以后也会更新 谢谢加星 2021 09 13 我建了一个表面缺陷检测的qq交流群657617577 欢迎大家入圈交流 GitHub Eatzhy Surface defec
  • 长春理工大学第六届CTF网络攻防大赛题解(文末有题目下载链接)

    此题解仅为部分题解 包括 RE Reverse Checkin SimplePE EzGame Web f12 ezrunner Crypto MD5 password 看我回旋踢 摩丝 Misc 爆爆爆爆 凯撒大帝的三个秘密 你才是职业选
  • R语言中tidyverse基础知识汇总

    tidyverse group by 分组统计 gather 和spread 简单地说 gather 是列转行 而spread 是行转列 请看下面的示例 gt df id class grade 1 1 a 81 2 2 b 82 3 3
  • Unity在UI界面上显示3D模型/物体,控制模型旋转

    https blog csdn net ChinarCSDN article details 81058773
  • TDengine数据库-TAOS涛思数据-批量下载上亿大数据成csv 解决bug: Query interrupted (Query terminated) 4798749 row(s) in set

    目录 前言 taos shell命令批量下载数据库遇到中断问题 分析问题 解决方案 查看tao cfg文件 使用分页下载 在合并csv 1 构建 sql文件批量进行下载 2 合并分csv文件成总csv文件 总结 其它资料下载 前言 TDen
  • ET篇:斗地主的流程(资源工作流)

    有了master的学习经验 斗地主的学习将不会太多精细化 更多细节大家可以自行查看 本系列文章旨在帮助大家理解整个开发流程 资源划分策略 先来到Asset下的Bundles文件夹 这里是游戏内用到的所有的资源 都被打成ab包 正式发布时将会
  • 「 每日一练,快乐水题 」14. 最长公共前缀

    文章目录 力扣原题 题目简述 解题思路 C 代码 结果展示 力扣原题 14 最长公共前缀 题目简述 编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀 返回空字符串 示例 1 输入 strs flower flow fligh
  • 一键设置L2TP脚本-Ubuntu14.04LTS

    亲测在Vultr和UltraVPS的Ubuntu 14 04 LTS成功搭建L2TP的VPN 本方法使用Linux自带的账户认证作为L2TP的认证 用户名默认为vpn user 密码在脚本执行过程中 由执行者手动设定密码 PSK为psk 开
  • linux中安装nginx

    2 安装nginx 2 1 安装nginx前 需要安装的依赖 可能是由于nginx版本旧原因 可能最新或较新版本不需安装这些依赖 如下四个依赖需要安装到linux中 2 1 1 安装 pcre 依赖 使用wget命令 步骤一 执行下面这个命
  • Debug断点无法执行

    1 可能是没有启动debug模式 导致无法进入 2 可能是idea中有缓存 导致直接出结果 这种选择重新启动项目即可
  • 浅谈core.js

    浅谈core js core js 前言 core js是什么 官方描述 总结 core js 前言 core js的作者 Denis Pushkarev 很有名 平时爱好就是飙摩托车 在一次事故中 酒驾 他以60km h的速度驾驶 结果撞
  • 2.5 Git 基础 - 远程仓库的使用

    2 5 Git 基础 远程仓库的使用 版本说明 版本 作者 日期 备注 0 1 loon 2019 3 21 初稿 目录 文章目录 2 5 Git 基础 远程仓库的使用 版本说明 目录 远程仓库的使用 1 查看远程仓库 2 添加远程仓库 3
  • 【大屏可视化模板】vue-dataV-echarts-elementul大屏数据可视化方案,屏幕适配方案等比例缩放

    效果图 从上到下 依次是F11效果 和正常网页效果 以及小屏效果 都是同比例缩放的 布局不会混乱 聊一下 为了让大家直观的看到所有的代码 所以结构方法等就不分各个组件引入了 会很麻烦要找哪是哪 我直接把所有的图都写在了一个vue组件内 并配
  • 电脑有网但打不开网页怎么办?

    明明刚交了宽带年费 本地连接显示一切正常 但是打开网页总有问题 换浏览器重启无效 我该怎么办 放心吧 下面 微点阅读小编整理了一些网络链接正常却上不了网的解决方法 对于经常上网的朋友来说 除了手机购物 在Pc端玩网页游戏是很多小伙伴的首选
  • idea 启动时怎么选择工作空间

    idea 启动时怎么选择工作空间 按快捷键 ctrl alt s打开设置 点击System Settings选项后 把右边版面中Reopen last projecton startup前面的勾去掉 保存 下次再打开的时候就可以选择你要的空
  • 关于Redis的事件回调解析以及docker中的配置

    基本概念 Redis的过期回调可以实现我们的redsi的key在过期的时候回调一些接口从而来实现项目中需要的一些功能 比如我们想在订单超时的时候进行关闭 可以用这个来进行一个简单的实现 当然实际的项目中能否这样使用我们暂且不做讨论 这里只是
  • word添加字体库

    1001 Fonts Free Fonts Baby 51044 free fonts in 28637 families Free licenses for commercial use Direct font downloads Mac
  • 一个数组有 N 个元素,求连续子数组的最大和(动态规划问题)

    该题题目如上 例如 1 2 1 连续的最大子数组为 2 1 和为3 题目要求我们输入第一个数为数组元素的个数 然后后面为我们需要输入的元素 遇到这一个题 我们首先可以这样考虑 设置一个sum和result sum是用来每次加新的元素 res