首页 > 试题广场 >

求连续子数组的最大和

[编程题]求连续子数组的最大和
  • 热度指数:9354 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。
如果最大的和为正数,则输出这个数;如果最大的和为负数或 0 ,则输出 0

数据范围: ,数组中的值满足

输入描述:
3,-5,7,-2,8


输出描述:
13
示例1

输入

-6,-9,-10

输出

0
a1=input().split(',')
a=[]
for n in a1:
    a.append(int(n))
s=0
sumbest=0
for num in a:
    if s+num>0:
        s=s+num
        sumbest=max(s,sumbest)
    else:
        s=0
print(sumbest)
发表于 2021-05-19 20:37:38 回复(0)
def func(number_list):
    length = len(number_list)
    max = 0
    for i in range(length):
        for j in range(i, length):
            if sum(number_list[i:j+1]) > max:
                max = sum(number_list[i:j+1])
    print(max)


number_list = list(map(int, input().split(",")))
func(number_list)

发表于 2019-08-26 16:57:07 回复(0)

def maxresult(num):
maxre=num[0]
res=num[0]
for i in range(1,len(num)):
if res>=0:
res=res+num[i]
else:
res=num[i]
if res>maxre:
maxre=res
return max(maxre,0)

#num=[]
#num.append(int(i) for i in input().split(','))
#num=[int(i) for i in input().split(',')]

num= list(map(int, input().split(",")))

maxresult(num)

牛客有问题吧,在本地都能跑出来结果,提交却总是卡在一个用例上面,但是本地IDE没有问题啊,最烦这种情况了

不通过
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为0.00%
用例:
4,1,-5,-19,5
对应输出应该为:
5
你的输出为:
空.请检查一下你的代码,有没有循环输入处理多个case.点击查看如何处理多个case

编辑于 2019-08-17 19:15:17 回复(0)
arr = [int(elem) for elem in input().split(',')]
max_val = 0 n = len(arr) for i in range(0, n): for j in range(i+1, n+1):
        select = arr[i:j] if sum(select)>max_val:
            max_val = sum(select) print(max_val)
发表于 2019-08-12 23:08:28 回复(0)
"""
最大子段和问题
ans[i]记录以i结尾的最大子段和
"""
import sys

if __name__ == "__main__":
    # sys.stdin = open("input.txt", "r")
    a = list(map(int, input().strip().split(',')))
    ans = [0]
    temp = 0
    for c in a:
        temp = max(0, temp) + c
        ans.append(temp)
    print(max(ans))

发表于 2019-07-10 12:27:18 回复(0)