程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Max Sum &&http://acm.hdu.edu.cn/showproblem.

Max Sum &&http://acm.hdu.edu.cn/showproblem.

編輯:C++入門知識

這一題和我們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的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved