首页 > 试题广场 >

最大子数组和

[编程题]最大子数组和
  • 热度指数:762 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

给定一个长度为 ()的整数数组 ,现在请你找出该数组的一个子数组,使得这个子数组的元素和最大

选择的子数组长度不能为0


输入描述:

第一行包含一个整数,表示数组的长度

第二行包含个整数,表示数组



输出描述:
输出为一个整数表示答案
示例1

输入

7
2 -4 3 -1 2 -4 3

输出

4

说明

显然,选择子数组,其总和最大,答案为4
//新手最易上手的方法
#include <iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);//加速输入输出可省略
    int n;cin>>n;
    int x;cin>>x;
    int ans=x;
    for(int i=1;i<n;i++){//从第一个开始查找,先找到第一个正数再说
        int a;cin>>a;
        if(x<0)x=a;//只要之前的累加和为负数就无意义,刷新x的值即可
        else x+=a;
        ans=max(ans,x);//实时更新最大的答案
    }
    cout<<ans;
}
发表于 2026-04-17 02:26:25 回复(0)