python 求连续子数组最大和的解决办法
内容摘要
这篇文章主要为大家详细介绍了python 求连续子数组最大和的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣python 求连续子数组最大和的简单示例的小伙伴,下面一起跟
感兴趣python 求连续子数组最大和的简单示例的小伙伴,下面一起跟
文章正文
这篇文章主要为大家详细介绍了python 求连续子数组最大和的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣python 求连续子数组最大和的简单示例的小伙伴,下面一起跟随php教程的小编罗X来看看吧。<br>问题描述:
例如:[6,-3,-2,7,-15,1,2,2]求连续子数组中的最大和,此数组中最大和为8,从arr[0]到arr[3]。其余位置都比这个要小。最大连续子数组的特点:(1)第一个不为负数(2)如果前面数的累加加上当前数小于当前数,说明这次累加对总体的结果是无效的;如果前面数的累加加上当前数大于当前数,说明这次累加对结果是具有促进效果的,结果在考虑的范围内。python实现代码如下:
# php教程网 (www.idcnote.com)
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,-3,-2,7,-15,1,2,2]
numbers=eval(input("请输入一个整数数组:"))
print(find_sub(numbers))
# End 512.笔记 www.idcnote.com
注:关于python 求连续子数组最大和的简单示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释