Maximum Subsequence Sum
题目详情 最大和子序列
根据陈越姥姥课上讲解的思路编写如下程序
#include<stdio.h>
int main()
{
int N,i;
scanf("%d",&N);
int a[N];
for(i=0;i<N;i++){
scanf("%d",&a[i]);
}
int maxsum,thissum,first_index,last_index,tmp_first_index;
maxsum=-1;
thissum=0;
first_index=0;
last_index=0;
tmp_first_index=0;
for(i=0;i<N;i++){
thissum=thissum+a[i];
// 在线处理
if(thissum>maxsum) {
maxsum=thissum;
last_index=i;
first_index=tmp_first_index;
}
if(thissum<0) {
// 开始新一段序列
thissum=0;
tmp_first_index=i+1;
}
}
if(maxsum>=0) printf("%d %d %d",maxsum,a[first_index],a[last_index]);
else printf("%d %d %d",0,a[0],a[N-1]);
return 0;
}