您的位置:首页 > 其它

九度 1011

2016-04-10 15:32 281 查看
1.动态规划(其实我不知道这是怎么回事,只是很久之前看视频看到过这个方法有印象就这么写了)

2.由于还要考虑到最大连续子序列,因此区间判定尤其重要,因此,会对于区间的开始需要采取措施保证是最大连续子序列

#include<cstdio>

int main()
{
int cursum,maxsum;
int k;
int _start,_end,maxstart;
int _count;
int flag1,flag2;;
int input;
int maxlength,curlength;
while((scanf("%d",&k))!=EOF && k!=0)
{
_count=0;
_start=0;
_end=0;
cursum=0;
maxsum=0;
flag1=0;
flag2=0;
maxlength=0;
curlength=0;
maxstart=0;
int strstart,strend;
for(int i=0;i<k;i++)
{
scanf("%d",&input);
if(input<0)
{
_count++;
}
if(i==0)
{
maxstart=input;
strstart=input;
_start=input;
}
if(i==k-1)
{
strend=input;
}
if(flag1==1)
{
_start=input;
flag1=0;
}
cursum+=input;
if(cursum>maxsum)
{
maxlength++;
curlength++;
_end=input;
maxsum=cursum;
maxstart=_start;
}
if(cursum==maxsum)
{
if(curlength>maxlength)
maxstart=_start;
}
if(cursum < 0)
{
cursum=0;
curlength=0;
flag1=1;
flag2=1;
}

}
if(_count==k)
printf("%d %d %d\n",maxsum=0,strstart,strend);
else
{
printf("%d %d %d\n",maxsum,maxstart,_end);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: