对于给定序列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);
}
该博客介绍了一种算法,用于在给定的整数序列中找到连续子段的和最大值。例如,在序列{-2, 11, -4, 13, -5, -2}
1028

被折叠的 条评论
为什么被折叠?



