hdu1003 Max Sum(最大子序列和) —— dp
2017-03-03 19:42
225 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003
代码如下:
#include<stdio.h>//hdu1003
int a[100005], dp[100005];
int main()
{
int T,n,max,s,e,ms,me;
scanf("%d",&T);
for(int k = 1; k<=T; k++)
{
scanf("%d",&n);
for(int i = 0; i<n; i++)
scanf("%d",&a[i]);
max = dp[0] = a[0], ms = me = s = e = 0;
for(int i = 1; i<n; i++)
{
if(dp[i-1]>=0)
{
dp[i] = dp[i-1] + a[i];
e = i;
}
else
{
dp[i] = a[i];
s = e = i;
}
if(dp[i]>max)
{
max = dp[i];
ms = s, me = e;
}
}
printf("Case %d:\n%d %d %d\n",k,max,ms+1,me+1);
}
return 0;
}
代码如下:
#include<stdio.h>//hdu1003
int a[100005], dp[100005];
int main()
{
int T,n,max,s,e,ms,me;
scanf("%d",&T);
for(int k = 1; k<=T; k++)
{
scanf("%d",&n);
for(int i = 0; i<n; i++)
scanf("%d",&a[i]);
max = dp[0] = a[0], ms = me = s = e = 0;
for(int i = 1; i<n; i++)
{
if(dp[i-1]>=0)
{
dp[i] = dp[i-1] + a[i];
e = i;
}
else
{
dp[i] = a[i];
s = e = i;
}
if(dp[i]>max)
{
max = dp[i];
ms = s, me = e;
}
}
printf("Case %d:\n%d %d %d\n",k,max,ms+1,me+1);
}
return 0;
}
相关文章推荐
- ACM学习历程—HDU1003 Max Sum(dp && 最大子序列和)
- HDU 1003 Max Sum(最大连续子序列和 经典DP)
- Max Sum 最大连续和的子序列 HDU 1003 (一维序列DP)
- HDU 1003 Max Sum(dp,最大连续子序列和)
- HDU-1003-Max Sum(dp经典问题-最大连续子序列和)
- Max Sum 最大连续和的子序列 HDU 1003 (一维序列DP)
- Max Sum(HDU1003)最大连续子序列和
- 【最大连续子序列和dp】hdu 1003 Max Sum
- HDU 1003 Max Sum (入门DP[1] 最大连续子序列)
- 【dp专题1】hdu1003 D - Max Sum 【最大子段和模板题】
- Max Sum(最大子序列和)(经典dp)
- 动态规划:HDU1003-Max Sum(最大子序列和)
- hdu 1003 Max Sum(分而治之||最大连续子序列 dp)
- HDU-#1003 Max Sum(DP+区间最大子序列)
- hdoj1003 Max Sum (DP 最大子序列求和)
- HDU 1003 Max Sum(dp,最大连续子序列和)
- Max Sum 最大连续和的子序列 HDU 1003 (一维序列DP)
- HDU 1231 最大连续子序列(和HDU1003 Max Sum类似的)
- HDU1003 Max Sum 最大子序列和的问题【四种算法分析+实现】
- Max Sum 最大连续和的子序列 HDU 1003 (一维序列DP)