最大字段和——動態規劃

最大字段和,常規解法有四種,分別是:

1、三重for循環;

2、兩重for循環;

3、分治解法;

4、動態規劃;


從時間複雜度的角度講,動態規劃是最優算法,故對其簡單介紹:


#include<iostream>
using namespace std;

int maxIntervalSum(int n,int a[])	//動態規劃求最大子段和,O(n)
{
	int max=a[0];
	int f[100];
	for(int i=1;i<n;i++)
	{
		if(f[i-1]>0)
		{
			f[i]=f[i-1]+a[i];
		}
		else
		{
			f[i]=a[i];
		}
		if(f[i]>max)
		{
			max=f[i];
		}
	}
	return max;
}

int main()
{
	int a[]={1,-3,5,-1,-2,-1,9,-6,4};
	cout<<maxIntervalSum(sizeof(a)/sizeof(int),a)<<endl;
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章