最大字段和(动态规划法)

今天算法上机老师要求我们用动态规划法求一堆整数的最大字段和,其递推式如下:
最大字段和(动态规划法)

原理为:当前面j – 1个数的求和大于0 时,执行b[j] = B[j - 1]  + a[j],否则令b[j] = a[j];

好了,完整的代码如下:

 

 

今天算法上机老师要求我们用动态规划法求一堆整数的最大字段和,其递推式如下:

 

                                                   b[j - 1]  + a[j]  ( b[j - 1] > 0 )

         b[j] =                                                                              (1 <=j

                  a[j]           (b[ j - 1] <= 0)  

 

原理为:当前面j – 1个数的求和大于0 时,执行b[j] = B[j - 1]  + a[j],否则令b[j] = a[j];

好了,完整的代码如下:

 

// 最大字段和(动态规划法).cpp : 定义控制台应用程序的入口点。

//

 

#include "stdafx.h"

#include

using namespace std;

#include

 

dequede;

 

void input()//输入测试数据

{

int n;

cout<<"请输入任意个整数,以0结束输入!"<

while(cin>>n ,n != 0)

{

de.push_back(n);

}

}

 

int MaxSection()

{

int max = 0;

int total = 0;

for(deque::iterator iter=de.begin();iter!=de.end();iter++)

    {

if( (total) > 0)//当之前的求和大于0

{

total += (*iter);

//if(total > max)max = total;

}

Else//当之前的和小于0

{

total = (*iter);

}

if(total > max)//如果当前的和大于之前的和

{

max = total;

                                               }

       }

return max;

}

 

int _tmain(int argc, _TCHAR* argv[])

{

cout<<"ddd"<

input();

cout<<"最大值为:"<

return 0;

}

 

你可能感兴趣的:(算法)