首页 > 代码库 > Max Sum
Max Sum
#include<stdio.h>
int main(){
int t,n,max,start,end;
int arr[100001];
int dp[100001];
scanf("%d",&t);
for(int j=0;j<t;j++){
max =-9999;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
}
dp[0]=arr[0];
start=end=0;
for(int i=1;i<n;i++){
if(dp[i-1]>=0){
dp[i]=dp[i-1]+arr[i];
}else
dp[i]=arr[i];
}
for(int i=0;i<n;i++){
if(max<dp[i]){
max=dp[i];
end = i;
}
}
// start = end;// 这里是一个关键点,在这里wrong N次
for(int i=end;i>=0;i--){
if(dp[i]>=0){
start=i;
}else
break;
}
printf("Case %d:\n",j+1);
printf("%d %d %d\n",max,start+1,end+1);
if(j!=t-1)
printf("\n");
}
return 0;
}
Max Sum