问? 20分求助
  • 板块灌水区
  • 楼主mayinghui
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/19 11:14
  • 上次更新2024/10/19 13:34:40
查看原帖
问? 20分求助
1493535
mayinghui楼主2024/10/19 11:14

最大子段和

题目描述

给出一个长度为 nn 的序列 aa,选出其中连续且非空的一段使得这段和最大。

输入格式

第一行是一个整数,表示序列的长度 nn

第二行有 nn 个整数,第 ii 个整数表示序列的第 ii 个数字 aia_i

输出格式

输出一行一个整数表示答案。

样例 #1

样例输入 #1

7
2 -4 3 -1 2 -4 3

样例输出 #1

4

提示

样例 1 解释

选取 [3,5][3, 5] 子段 {3,1,2}\{3, -1, 2\},其和为 44

数据规模与约定

  • 对于 40%40\% 的数据,保证 n2×103n \leq 2 \times 10^3
  • 对于 100%100\% 的数据,保证 1n2×1051 \leq n \leq 2 \times 10^5104ai104-10^4 \leq a_i \leq 10^4

#include <bits/stdc++.h> using namespace std; int a[200010],k[200010]; int main(){ int n,max1=INT_MIN; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); k[i]=k[i-1]+a[i]; } for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ max1=max(k[j]-k[i],max1); } } printf("%d",max1); return 0; }

2024/10/19 11:14
加载中...