求最大子列和 (连续子串的最大值)

来源:互联网 发布:宾馆网络解决方案 编辑:程序博客网 时间:2024/06/05 19:10
#include <iostream>#include <algorithm>#include <vector>using namespace std;//网上流传版本忽略了一种案例,是当所有数都为负数的时候,最大子列和为第一个数。int max(const vector<int>& vec)  {  int maxsum = 0, cursum = 0; int count=0;for (int i = 0; i < vec.size(); i++)   {  cursum += vec[i];  if (cursum > maxsum)  maxsum = cursum;  else if (cursum <= 0)  {cursum = 0;count++;}  }if (count==vec.size())return *(vec.begin());return maxsum;  } int main(){
        //在线编程时,自己常常在输入这里停顿很久,总是有各种错误
       //以下为先输入一组不定长度的数据,以回车结束int num;vector<int> v1;while(cin>>num){v1.push_back(num);if (cin.get()=='\n')break;}int k=max(v1);  cout<<k<<endl;return 0;}


代码参考来源:

http://blog.csdn.net/aiphis/article/details/47422857

很多博客写的代码很乱,感觉思路不清晰,看到这个博主写的很好,借过来加一点改进,也推荐给大家

原创粉丝点击