HDOJ–1003Max Sum

來源:互聯網
上載者:User

典型的求最大子數組和的問題,在前面的一篇文章中已經討論過這個演算法了.STL標準庫為我們提供了一個更好操作的模版---vector, 相比數組, vector具有可動態增長的特點,不像數組一旦定義,空間就已經固定不變了。與我們可以用指標訪問數組一樣,我們使用迭代器(一種資料類型)來訪問容器內的元素。所以A掉這個題目並不難,下面就是ac代碼

#include <iostream>#include <vector>using namespace std;using std::vector;int Max_SubArray(vector<int>::iterator pia,int len,int *start_script,int *end_script) {int max_sum=0;      int i,flag=0;      int temp_sum=0;      int start=0,end;for(i = 0;i != len;++i){ if(temp_sum < 0)  {  temp_sum=pia[i];  end=i;start=i;}else  {  temp_sum += pia[i];  end=i;  }  if(temp_sum > max_sum)  {max_sum=temp_sum;  *start_script=start;  *end_script=end;  } }if(max_sum==0)  {  max_sum=pia[0];  *start_script=0;*end_script=0;  for(i = 0;i != len;++i)  {  if(pia[i] > max_sum)  {  max_sum=pia[i];  *start_script=i;*end_script=i;  }  }      } return max_sum;}int main(){int ival; int len,n,ai; int start,end;int re,i,count=0,flag;cin>>n;flag=n;while(n--){count++;vector<int> ivec;start=0;end=0;re=0;cin>>ival;for(i=0;i<ival;i++){cin >> ai;ivec.push_back(ai);}len=ivec.size();vector<int>::iterator iter = ivec.begin();//定義了一個迭代器類型變數iter,並且初始化指向ivec容器第一個元素re=Max_SubArray(iter,len,&start,&end);//s,l以引用的形式傳入函數,函數處理後返回相應值cout<<"Case "<<count<<":"<<endl;cout<<re<<" "<<start+1<<" "<<end+1<<endl;if(count != flag)cout<<endl;}return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.