hdu 1003 Max Sum
这道题目的思路就是:从第一个数字开始加,当sum < 0的时候,sum = 0;(PS:加一个和为负数的子段,不如舍弃。);sum > max;时,max = sum;
所以这道题目中用动态规划的状态转移方程,可以总结为dp[i] = dp[i - 1] + t > t ? dp[i - 1] + t : t;
</pre><pre name="code" class="csharp">#include <stdio.h>
int main(void)
{
int n, t, k;
scanf("%d", &k);
for(int j = 1; j <= k; j++)
{
if(j != 1)
printf("\n");
int sum = 0, m, start, end, text;
scanf("%d", &n);
int max = -1000000000;
start = text = 1;
for(int i = 1; i <= n; i++)
{
scanf("%d", &t);
sum += t;
if(sum >= max)
{
max = sum;
start = text;
end = i;
}
if(sum < 0)
{
sum = 0;
text = i+1;
}
}
printf("Case %d:\n%d %d %d\n", j, max, start, end);
}
return 0;
}