题解 | 最大序列和
最大序列和
https://www.nowcoder.com/practice/df219d60a7af4171a981ef56bd597f7b
#include <stdio.h> #include <stdlib.h> #include <limits.h> int main() { int n; while (scanf("%d", &n) != EOF) { // 注意 while 处理多个 case // 64 位输出请用 printf("%lld") to int*dp=(int*)malloc(sizeof(int)*(n+1)); int*arr=(int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++)scanf("%d",arr+i); dp[0]=0; for(int i=0;i<n;i++){ if(dp[i]>=0)dp[i+1]=dp[i]+arr[i]; else dp[i+1]=arr[i]; } int max=INT_MAX+1; for(int i=1;i<n+1;i++){ if(dp[i]>max)max=dp[i]; } printf("%d\n",max); free(dp); free(arr); } return 0; }