Dp解决数组中连续子数组的最大和

#include<iostream>

using namespace std;

int DP(int a[],int size)
{
    int TempSum,CurSum;
    CurSum = a[0];
    int max = CurSum;
    for(int i = 1;i<size;i++)
    {
          TempSum = CurSum;
          if(TempSum>0)
          {
                  CurSum = (TempSum+a[i]) >= a[i] ? (TempSum+a[i]) : a[i];
          }
          else
          {
                  CurSum = a[i];
          }
          if(CurSum > max)
          {
                    max = CurSum;
          }
    }
    return max;
}
int main()
{
    int a[] = {1,-2,3,10,-4,7,2,-5};
    int result = DP(a,8);
    cout << result << endl;
    system("pause");
    
    return 0;
}

 

 

posted @ 2013-09-06 16:52  karlthas  阅读(323)  评论(0编辑  收藏  举报