C++实现给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。 Input 第一行是一个整数,表示序列的长度 n。 第二行有 n 个整数,第 i 个整数表示序列的第 i 个数字 ai 。 Output 输出一行一个整数表示答案。
时间: 2023-02-15 15:35:08 浏览: 238
数据结构与算法C++实现 循环顺序队列的初始化,求长度,入队,出队
5星 · 资源好评率100%
给出一种 C 语言的实现方法:
```
#include <stdio.h>
#include <limits.h>
int main() {
int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int max_sum = INT_MIN;
int current_sum = 0;
for (int i = 0; i < n; i++) {
current_sum += a[i];
if (current_sum > max_sum) {
max_sum = current_sum;
}
if (current_sum < 0) {
current_sum = 0;
}
}
printf("%d\n", max_sum);
return 0;
}
```
这里的做法是使用一个变量 `current_sum` 来记录当前的连续子序列和,当 `current_sum` 小于 0 时,将其重置为 0。如果 `current_sum` 大于当前的最大子序列和,就更新最大子序列和。
阅读全文