加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:48:06 所属栏目:Python 来源:网络整理
导读:感兴趣python 求连续子数组最大和的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧。br 问题描述: 例如:[6,-3,-2,7,-15,1,2,2]求连续子数组中的最大和,此数组中最大和为8,从arr[0]到arr[3]。其余位置都比这个要
感兴趣python 求连续子数组最大和的简单示例的小伙伴,下面一起跟随编程之家 52php.cn的小编来看看吧。<br>

问题描述:

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

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

python实现代码如下:
#  编程之家  (52php.cn) 

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 512.笔记 52php.cn

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读