对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。
输入
6 -2 11 -4 13 -5 -2
输出
20
#include<stdio.h>
int main(){
int n;
int arr[100],k[100];
scanf("%d",&n);
int i;
for(i=1;i<=n;i++){
scanf("%d",&arr[i]);
}
int max=arr[1];
k[0]=0;
for(i=1;i<=n;i++){
k[i]=arr[i];
if((k[i-1]+arr[i])>arr[i]){
k[i]=k[i-1]+arr[i];
}
if(k[i]>max){
max=k[i];
}
}
printf("%d",max);
}