首页 > 代码库 > hdu 1003 Max Sum
hdu 1003 Max Sum
下面模拟过程:
1.首先,读取第一个数据,令now和max等于第一个数据,初始化first,last,x位置
2.然后,读入第二个数据,判断①. 若是now+next<next,表示当前读入的数据比之前存储的加上当前的还大,说明可以在当前另外开始记录,更新now=next②. 反之,则表示之前的数据和在增大,更新now=now+next
3.之后,把now跟max做比较,更新或者不更新max的值,记录起始、末了位置
4.循环2~3步骤,直至读取数据完毕。
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int n,i,m,max,now,j,next,first,last,x; 6 cin>>n; 7 for(i=1;i<=n;i++) 8 { 9 cin>>m;10 cin>>next;11 now=max=next;12 last=1;first=1;x=1;13 for(j=2;j<=m;j++)14 {15 cin>>next;16 if(now+next<next)17 {18 now=next;19 x=j;20 21 }22 else23 {24 now+=next;25 }26 if(now>max)27 {28 max=now;29 first=x;30 last=j;31 }32 }33 cout<<"Case "<<i<<":"<<endl;34 cout<<max<<" "<<first<<" "<<last<<endl;35 if(i!=n)36 cout<<endl;37 }38 }
hdu 1003 Max Sum
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。