51nod-最大子段和问题

    xiaoxiao2025-10-30  9

    给出一个整数数组a(正负数都有),如何找出一个连续子数组(可以一个都不取,那么结果为0),使得其中的和最大?

    输入 第1行:整数序列的长度N(2 <= N <= 50000) 第2 - N + 1行:N个整数(-10^9 <= A[i] <= 10^9) 输出 输出最大子段和。 输入示例 6 -2 11 -4 13 -5 -2 输出示例 20

    <span style="font-size:18px;">#include<cstdio> #define LL long long LL num[50000+11]; int main() { int n; scanf("%d",&n); int i; for(i=0;i<n;++i) scanf("%lld",&num[i]); LL sum=0,max=0; for(i=0;i<n;++i) { sum+=num[i]; if(sum>max) max=sum; if(sum<0) sum=0; } if(max<0) printf("0\n"); else printf("%lld\n",max); return 0; }</span>

    转载请注明原文地址: https://ju.6miu.com/read-1303664.html
    最新回复(0)