首页 > 试题广场 >

连续子数组最大和(ACM版本)

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

输入描述:
第一行为一个正整数 ,代表数组的长度。 1\leq n \leq 2 \cdot10^5
第二行为 个整数 a_i,用空格隔开,代表数组中的每一个数。


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

输入

3
3 -4 5

输出

5

说明

选择 [5] 这个子数组即可。
示例2

输入

3
4 -3 5

输出

6

说明

选择 [4,-3,5] 这个子数组。
真的无语,同样的代码,自测和提交输出的结果不同

发表于 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)