/************************************************************************/ /* 求最大子序列的和,时间复杂度Q(N) */ /************************************************************************/ bool g_bInputIsInvalid=false;//判断输入是否合法 int FindGreatestSumOfSubArray(vector<int> array) { if(array.size()==0){ g_bInputIsInvalid=true; return 0; } vector<int>::const_iterator iter=array.begin(); int nMaxSum=array[0];//这里很关键 int nCurrentSum=0; for(;iter!=array.end();++iter){ nCurrentSum+=*iter; if(nCurrentSum>nMaxSum){ nMaxSum=nCurrentSum; } else if(nCurrentSum<0){ nCurrentSum=0; } } return nMaxSum; }