首页 > 试题广场 >

连续子数组最大和

[编程题]连续子数组最大和
  • 热度指数:27250 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为 的数组,数组中的数为整数。
请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,子数组最小长度为1。求这个最大值。

输入描述:
第一行为一个正整数 ,代表数组的长度。
第二行为 个整数 a_i,用空格隔开,代表数组中的每一个数。


输出描述:
连续子数组的最大之和。
示例1

输入

8
1 -2 3 10 -4 7 2 -5

输出

18

说明

经分析可知,输入数组的子数组[3,10,-4,7,2]可以求得最大和为18       
示例2

输入

1
2

输出

2
示例3

输入

1
-10

输出

-10
真的无语,同样的代码,自测和提交输出的结果不同

发表于 2024-09-26 18:02:40 回复(0)
package main

import(
    "fmt"
    "math"
)

func main() {
    max := math.MinInt32
    var n int
    fmt.Scanln(&n)

    arr := make([]int, n+1)

    for i:=1; i<=n; i++ {
        fmt.Scanf("%d", &arr[i])

        if temp := arr[i]+arr[i-1]; temp > arr[i] {
            arr[i] = temp
        }

        if max < arr[i] {
            max = arr[i]
        }
    }

    fmt.Println(max)
}
加个go
发表于 2022-02-08 13:23:16 回复(0)