当前位置:编程学习 > php >>

Max Sum &&http://acm.hdu.edu.cn/showproblem.php?pid=1003

这一题和我们oj上的求连续最大子串方法一样,不一样的就是这里需要记录连续子串和的初末位置。。。

#include<iostream> 
#define N 100001 
using namespace std; 
int a[N]; 
int main() 
{ int n; 
  cin>>n; 
  for(int k=1;k<=n;++k) 
  { int m,i; 
    cin>>m; 
    memset(a,0,sizeof(a)); 
     int max=-0xfffff,sum=0; 
       int s=1,e=1,t=1; 
    for( i=1;i<=m;++i) 
       {cin>>a[i]; 
        sum+=a[i]; 
         if(sum>max) 
         { s=t;//记录一下初位置 
           e=i;//记录一下末位置 
           max=sum; 
         } 
         if(sum<0) 
         {  sum=0; 
            t=i+1;//修改初位置 
         } 
       } 
           cout<<"Case "<<k<<":"<<endl; 
           cout<<max<<" "<<s<<" "<<e<<endl; 
           if(k!=n) cout<<endl;  
  }return 0; 


摘自 pursuit的专栏
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,