DP计算最大和HDU1003

来源:互联网 发布:淘宝女装皇冠店铺排行 编辑:程序博客网 时间:2024/05/20 18:46
#include <stdio.h>
int dp[100005];
int f[100005];
int main()
{
int t;
int n,i,j,ch;
int sum;
int fr,ed;
int max;
while(scanf("%d",&t)!=-1)
{
for(i=1;i<=t;i++)
{
max=-10000;
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d",&f[j]);
dp[0]=f[0];                            
fr=ed=ch=0;                                     //ch记录当前的起点位置,fr,ed记录最大值的起点终点
for(j=1;j<n;j++)
{
sum=dp[j-1]+f[j];                      //比较dp[j-1]+f[j]与f[j]的大小,dp[j]取较大值
if(f[j]>sum)
{
dp[j]=f[j];
ch=j;
}
else
dp[j]=sum;
if(dp[j]>max)                           //和max比较
{
max=dp[j];
ed=j;
fr=ch;
}
}
printf("Case %d:\n%d %d %d\n",i,max,fr+1,ed+1);
if(i<t)
printf("\n");
}
}
return 0;
}
0 0
原创粉丝点击