连续最大和

一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3

输入描述:

输入为两行。

第一行一个整数n(1 <= n <= 100000),表示一共有n个元素

第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。

输出描述:

所有连续子数组中和最大的值。

输入例子:

3

-1 2 1

输出例子:

3


#include<stdio.h>

#include<string.h>

int num[111111];

int dp[111111];


int max(int a, int b) {

return a > b ? a : b;

}

int main() {

int n;

scanf("%d", &n);

for (int i = 1; i <= n; i++) {

scanf("%d", &num[i]);

}

memset(dp, 0, sizeof(dp));

int maxN = num[1];

for (int i = 1; i <= n; i++) {

dp[i] = max(dp[i-1]+num[i], num[i]);

maxN = max(dp[i], maxN);

}

printf("%d\n", maxN);

return 0;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容