最大子序列求和_算法——求最大子段和

7e2a77911b36cb8f685fee2bad478c8f.png

一、问题描述

给定由n个整数组成的序列(a_1,a_2,…,a_n),最大子段和问题要求该序列形如

的最大值(1≤i≤j≤n),当序列中所有整数均为负整数时,其最大子段和为0。

例如,序列(-20, 11, -4, 13, -5, -2)的最大子段和为:

注意:必须是连续整数的和。

二、分治策略

(1)划分

–按照平衡子问题的原则,将序列(

,
,…,
) 划分成长度相同的两个子序列(
,…,
)和(
,…,
),则会出现以下三种情况:

,
,…,
的最大子段和 =
,…,
的最大子段和;

,
,…,
的最大子段和 =
,…,
的最大子段和;

,
,…,
的最大子段和 =
, 且1≤i≤⌊
⌋ , ⌊
⌋+1≤j≤n

(2)求解子问题

对于划分阶段的情况①和②可递归求解

对情况③,分别计算

b109530cf690814c73393988d138b0ae.png

为情况③的最大子段和。

(3)合并

–比较在划分阶段的三种情况下的最大子段和,取三者之中的较大者为原问题的解。

ec75a973a055a1a867b61c46511d9741.png
步骤示意图

三、算法实现

  int MaxSum(int a[ ], int left, int right){sum=0;if (left= =right) {      //如果序列长度为1,直接求解if (a[left]>0) sum=a[left];else sum=0;}else {center=(left+right)/2;    //划分leftsum=MaxSum(a, left, center);                //对应情况①,递归求解rightsum=MaxSum(a, center+1, right);      //对应情况②,递归求解s1=0; lefts=0;              //以下对应情况③,先求解s1for (i=center; i>=left; i--) {lefts+=a[i];if (lefts>s1) s1=lefts;}s2=0; rights=0;             //再求解s2for (j=center+1; j<=right; j++) { rights+=a[j];if (rights>s2) s2=rights;}sum=s1+s2;              //计算情况③的最大子段和 if (sum<leftsum) sum=leftsum;  //合并,在sum、leftsum和rightsum中取较大者if (sum<rightsum) sum=rightsum;}return sum;
}
思考:采用分治法求解(-20,11,-4,13,-5,-2)的最大子段和, 写出求解过程。

四、时间复杂度分析

对应划分得到的情况①和②,需要分别递归求解;

对应情况③,两个并列for循环的时间复杂性是O(n),所以,存在如下递推式:

207df6c5f6cb0f4db7fecfa08fe0b0bf.png

综上,时间复杂性为O(nlog2n)。

内容有待完善,请客官等待更新!

562849aa2b5c067935a69f007bad1ee4.png

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

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

相关文章

seo黑帽劫持用的php,黑帽seo 论坛:黑帽seo防止网站被k的js劫持跳转代码

由于目前百度搜索百度搜索引擎对于js代码还没有办法完全辨别&#xff0c;因此也就出现了运用js代码跳转的黑帽优化提升手法。现如今在网络上有关js跳转代码不计其数&#xff0c;但是作为黑帽优化提升的seo手法之一&#xff0c;如何确保有效降低跳转的网址被k危害性&#xff0c;…

python vtk mousemove_VTK的视点研究之三维空间漫游(转载)

VTK的视点研究之三维空间漫游(转载)分类&#xff1a;计算机2009-08-17 16:19阅读(?)评论(0)#include #include "vtkConeSource.h"#include "vtkPolyDataMapper.h"#include "vtkRenderWindow.h"#include "vtkCamera.h"#include "…

php实现金币提现,PHP实现微信提现功能

本文实例为大家分享了PHP实现微信提现功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下一、实现功能这几天在小程序里要实现用户从系统中提现到零钱的功能&#xff0c;查了一下文档可以使用 企业付款到用户零钱 来实现&#xff1b;官方文档注意事项&#xff1a;商…

oracle 同义词_【干货7】Oracle知识关键代码摘要

&#xff08;如果我分享的干货内容对你有帮助&#xff0c;可以通过赞或者评论的方式告诉我&#xff0c;我会持续分享&#xff1b;或者留言你想要的IT方面的支持&#xff0c;我将分享大家感兴趣的IT类技术干货&#xff1b;如果没有收到大家的反馈&#xff0c;10天后我将停止技术…

php new static,PHP面向对象中new self( )和 new static( ) 的区别

首先阐明结论&#xff0c;在PHP中 self指向定义了当前被调用方法的类&#xff0c; static指向调用当前静态方法的类。接下来通过一个例子来证明上面的结果class A{public static $_a Class A;public static function echoProperty(){echo self::$_a . PHP_EOL;}}class B exten…

python 动态规划_DP动态规划(Python实现)

前言_我们遇到的问题中&#xff0c;有很大一部分可以用动态规划(简称DP)来解。 解决这类问题可以很大地提升你的能力与技巧&#xff0c;我会试着帮助你理解如何使用DP来解题。 这篇文章是基于实例展开来讲的&#xff0c;因为干巴巴的理论实在不好理解。注意&#xff1a;如果你对…

php gif 透明,解决PHP剪切缩略图生成png,gif透明图时,黑色背景问题

背景图填充白色背景$white imagecolorallocate($dstim,255,255,255);imagefilledrectangle($dstim,0,0,$width,$height,$white);imagecolortransparent($dstim,$white);设置图片走透明通道$img imagecreatefrompng($src);imagesavealpha($img,true);//这里很重要;$thumb ima…

qt做的接收串口数据并显示曲线_QT无人机地面站设计与制作

近年来&#xff0c;无人机可谓是大火。无论是军事&#xff0c;还是民用&#xff0c;它的地位更是不用说。但&#xff0c;如何利用利用现有技术对无人机的信息进行操作&#xff0c;实现人、机合一呢&#xff1f;“无人机地面站”应运而生&#xff0c;结合仿真系统为地面工作人员…

php直接读取csv文件,php实现的读取CSV文件函数示例

本文实例讲述了php实现的读取CSV文件函数。分享给大家供大家参考&#xff0c;具体如下&#xff1a;function read_csv($cvs) {$shuang false;$str file_get_contents($cvs);for ($i0;$iif($str{$i}") {if($shuang) {if($str{$i1}") {$str{$i} *;$str{$i1} *;} el…

系统背景描述_【计算机论文】管件加工管理系统和数据库的结构探析

摘 要:结合"中国制造2025"及德国"工业4.0"的发展趋势,概述目前国内管件生产加工流程的现状和不足,基于对管件加工过程中管件之间的差别、管件加工批次的混合等特点导致的管理难点分析,介绍管件生产加工管理系统的设计思路和工作流程,并对该系统未来可进一步…

python中的命令行参数_python学习笔记6:命令行参数

1. 使用步骤使用步骤如下:# 导入模块import argparse# 获取parser, description文本会显示在help信息中parser argparse.ArgumentParser(descriptionargs discrip)# 添加选项, 具体选项类型见后面各节parser.add_argument(-a)# 解析选项args parser.parse_args(sys.argv[1:])…

php 年的第几天,收藏-php中某年第几天计算出日期年月日的代码

很实用的小功能&#xff0c;希望对大家有帮助。这个索引值除了方便面数据的记录和搜索&#xff0c;还起着记录日期信息的作用&#xff0c;信息量很可观。那么&#xff0c;如何还原索引值为可用的日期资讯呢&#xff1f;date(z)返回的是一年中的第几天&#xff0c;返回值为从0开…

shell tr 替换 空格_Shell 字符串分隔符!!!(全网最详细总结)

前言&#xff1a;在shell脚本编程中&#xff0c;我们经常会用到切割字符串&#xff0c;类似于python中的split。但shell中的命令比较五花八门&#xff0c;小编也是苦扰了很久&#xff0c;终于下定决心对它做一个总结。方法一&#xff1a;字符串替换法#/bin/bashstring"Hel…

php where 不包含,php – 除非它们包含“where”或“like”子句,否则不允许删除

我的查询 –$shortlistpartners是数组$this->db->delete(shortlist_partners);$this->db->where(opp_id,$this->input->post(opp_id));$this->db->where_in(partner_id,$shortlistpartners);除非它们包含“where”或“like”子句,否则不允许删除.错误即…

本机用域名不能访问_域名注册申请网站域名注意事项

互联网用户越来越多&#xff0c;也有越来越多人搭建网站&#xff0c;做个人博客也好、搭建企业官网也好&#xff0c;数量都在逐步上升。做网站的数量在上升&#xff0c;域名注册量肯定也在上升。有的朋友头一次注册域名&#xff0c;对域名不了解也不知道申请网站域名该注意哪些…

电脑微信不用手机确认_不用安装第三方软件,手机投屏到电脑就这么简单

在头条上收到网友的提问&#xff0c;如果想把手机的内容投影到电脑上&#xff0c;该怎么做&#xff1f;为此我做一个简单的教程&#xff0c;不用安装第三方软件&#xff0c;就用Windows 10自带的无线显示功能和安卓手机的自带无线显示功能来实现。前提条件&#xff1a;1. 电脑是…

php图片截取后缀,PHP抓取远程图片(含不带后缀的)教程详解

一、创建项目作为演示&#xff0c;我们在www根目录创建项目grabimg&#xff0c;创建一个类GrabImage.php和一个index.php。二、编写类代码我们定义一个和文件名相同的类&#xff1a;GrabImageclass GrabImage{}三、属性接下来定义几个需要使用的属性。1、首先定义一个需要抓取的…

tomcat7 https 拒绝连接_物与网怎么连接呢?物联网架构及五大通信协议

消息触达能力是物联网(internet ofthings, IOT)的重要支撑&#xff0c;而物联网很多技术都源于移动互联网。柳猫将阐述移动互联网消息推送技术在物联网中的应用和演进。一、物联网架构和关键技术从开发的角度&#xff0c;无线接入是物联网设备端的核心技术&#xff0c;身份设备…

安卓手机浏览器排行_5g时代已来临!五月安卓手机性价比排行:两千元以上5G手机屠榜...

5月已经过去&#xff0c;同时也标志着今年上半年手机的发布已经告一段落。那么在这段时间里&#xff0c;智能手机的性价比如何呢&#xff1f;考虑到现在已经开始步入5G时代&#xff0c;所以智能手机的价格也是普遍上涨&#xff0c;想要找到一款性价比不错的手机似乎有些难度。现…

noclassdeffounderror java,从终端运行Java文件时出现java.lang.NoClassDefFoundError

我是Java新手。我一直在使用Eclipse测试一个简单的Java类(名为NewHelloWorld)&#xff0c;它在控制台中运行良好。当我尝试从终端执行相同的操作时&#xff0c;它会正确编译(创建HelloWorld.class而不给出任何错误)&#xff0c;但是随后javaNewHelloWorld显示以下错误Exception…