这个题目其实就是最大连续字段和,在动态规划部分讲过。
现在为了阿里面试,再次拿出来复习一下。
#include<stdio.h>
int main()
{
int a[100];
int dp[100];
int n,start,end,max;
while(scanf("%d",&n)==1)
{
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max = 0;
dp[0] = a[0];
for(i=1;i<n;i++)
{
if(dp[i-1]>0)
dp[i] = dp[i-1]+a[i];
else
dp[i] = a[i];
if(dp[i]>max)
{
max = dp[i];
if(dp[i] == a[i])
{
start = i;
end = i;
}
else
{
end = i;
}
}
}
printf("max=%d,start=%d,end=%d",max,start,end);
}
}