题解 | 最大序列和
最大序列和
https://www.nowcoder.com/practice/6ff244626ac34f7f8a9f29351cc0853b
#include <stdio.h>
int main() {
long long a, b,n;
scanf("%lld", &n) ;
long long c[n];
for(int i=0;i<n;i++)
{
scanf("%lld",&c[i]);
}
long long partmax, overmax=0,m;
for(long long i=0;i<n;i++)
{
if(c[i]>0) {partmax=c[i];m=i;break;}
}
long long k;
for(long long i=m;i<n-1;i++){
partmax=partmax+c[i+1];k=i+2;
if(partmax>overmax){overmax=partmax;}
if(partmax<0&&k<n){partmax=0;}
}
long long temp=c[0];
for(long long j=0;j<n;j++){
if(c[j]>temp)temp=c[j];
}if(temp<0)overmax=temp;
printf("%lld",overmax);
return 0;
}
使用部分最优和全局最优,注意要用long long 类型
巨人网络成长空间 113人发布