http://acm.hdu.edu.cn/showproblem.php?pid=1003
这个是最大字段和问题,具体用DP来解决,其中,动态转移方程为:dp[i] = max(dp[i-1]+a[i],a[i])
#include <stdio.h>
int a[100010];
int main(void)
{
int n,m,k = 1,i,pos,start,end;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
for(i = 1; i <= m; i++)
{
scanf("%d",&a[i]);
}
int s = 0,max = a[1];
pos = start = end = 1;
for(i = 1; i <= m; i++)
{
if(s < 0)
{
s = a[i];
pos = i;
}
else
s += a[i];
if(max < s)
{
max = s;
start = pos;
end = i;
}
}
printf("Case %d:\n%d %d %d\n",k++,max,start,end);
if(n > 0)
printf("\n");
}
return 0;
}