最大子段和

来源:互联网 发布:用php能做oa系统吗 编辑:程序博客网 时间:2024/06/08 06:42
/*************************************************************************  * File Name: Solution.cpp  * Description:   * Author: Yuji CAO  * Mail: caoyuji@sogou-inc.com  * Created_Time: 2015-07-29 10时06分03秒  * Last modified: 2015-07-29 10时06分03秒 ************************************************************************/#include<stdio.h>#include<vector>#include<string>#include<map>#include<set>using namespace std;int continuousSubSect(vector<int>& dat){    int maxSS=0;int curSS=0;    for(int i=0;i<dat.size();++i){        if(curSS+dat[i]>=0){            curSS+=dat[i];        }else{            curSS=0;        }        if(curSS>maxSS){            maxSS=curSS;        }    }    return maxSS;}int main(){    int d[]={1,3,-5,4,9,6,-7};    vector<int> dat(d,d+sizeof(d)/sizeof(d[0]));    int ret=continuousSubSect(dat);    printf("%d\n",ret);    return 1;}

分析

问题的关键点在于扫描的过程中避免计算重复问题和每个时刻都检查当前状态是否是比前一状态的解更优,从而更新前一状态。

0 0
原创粉丝点击