python 求连续子数组最大和的简单示例

感兴趣python 求连续子数组最大和的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。<br>

问题描述:

例如:[6,-3,-2,7,-15,1,2,2]求连续子数组中的最大和,此数组中最大和为8,从arr[0]到arr[3]。其余位置都比这个要小。

最大连续子数组的特点:
(1)第一个不为负数
(2)如果前面数的累加加上当前数小于当前数,说明这次累加对总体的结果是无效的;如果前面数的累加加上当前数大于当前数,说明这次累加对结果是具有促进效果的,结果在考虑的范围内。

python实现代码如下:
#  编程之家  (jb51.cc) 

def find_sub(arr):
    #定义两个变量,一个用来存放之前的累加值,一个用来存储当前的最大和
    max_sum=int(arr[0])#定义为第一个为最大
    pre_sum=0
    for i in arr:#遍历数组中的元素
        if pre_sum<0:
            pre_sum=int(i) #如果之前的累加和是小于0的则应该从当前值进行累加
        else:
            pre_sum+=int(i)
            #如果是大于等于0的则需要将当前的数加到当前最大子数组中
        if pre_sum>max_sum:
            max_sum=pre_sum
    return max_sum
if __name__ == '__main__':
    # numbers=[6,2]
    numbers=eval(input("请输入一个整数数组:"))
    print(find_sub(numbers))

# End 编程之家 jb51.cc

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...