给定一个长度为
的数组,数组中的数为整数。
请你选择一个非空连续子数组,使该子数组所有数之和尽可能大。求这个最大值。
第一行为一个正整数,代表数组的长度。
第二行为个整数
,用空格隔开,代表数组中的每一个数。
连续子数组的最大之和。
3 3 -4 5
5
选择 [5] 这个子数组即可。
3 4 -3 5
6
选择 [4,-3,5] 这个子数组。
#include <stdio.h> int main() { int n,max; scanf("%d",&n); int a[n],dp[n]; for (int i=0; i<n; i++) { scanf("%d",&a[i]); } dp[0]=a[0]; max=dp[0]; for (int i=1; i<n; i++) { dp[i]=(a[i]>(dp[i-1]+a[i])?a[i]:(dp[i-1]+a[i])); max=(dp[i]>max?dp[i]:max); } printf("%d", max); return 0; }