题解 | #最大连续子序列#

最大连续子序列

https://www.nowcoder.com/practice/afe7c043f0644f60af98a0fba61af8e7

while True:
    try:
        k=int(input())#接收收入的整数K
        if k==0:
            break     #若K=0,中止运算
        list1=input().split()  #接收K个整数,并存储到列表里
        max_num=int(list1[0])  #设整个序列的最优子序列值为第一个元素
        num=int(list1[0])      #设初始子序列最大值为第一个元素
        i1,i2=0,0              #初始子序列的首尾下标值
        max_i1,max_i2=0,0      #整个序列的最大子序列值的首尾下标值
        for i in range(1,k):
            if num+int(list1[i])<int(list1[i]):#num为负数时,初始子序列最大值定义为当前值
                num=int(list1[i])
                i1=i          #初始子序列最大值的首位下标相应更新
                i2=i
            else:
                num=num+int(list1[i])   #初始子序列值更新
                i2=i                    #初始子序列的尾位下标更新
            if max_num<num:     #判断此时子序列值和最优值大小
                max_num=num     #子序列值大于最优值时,更新最优值
                max_i1=i1
                max_i2=i2       #更新最优值首尾下标
        if max_num<0:   #最优值为负数时,即列表所有元素均为负数
            max_num=0   
            max_i1=0
            max_i2=len(list1)-1  #输出最优值为0,整个列表的首尾元素
        print(max_num,list1[max_i1],list1[max_i2])
    except:
        break

全部评论

相关推荐

06-07 12:20
新余学院 Java
点赞 评论 收藏
分享
06-11 13:34
门头沟学院 C++
offe从四面八方来:我真的没时间陪你闹了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务