// 最大子段和.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
int MaxSum_test(int v[], int l, int r)
{
int k,sum = 0;
if (l ==r)
{
return v[l] >= 0 ? v[l]:0;
}
else
{
int center = (l+ r) / 2;
int lsum = MaxSum_test(v, l, center);
int rsum = MaxSum_test(v, center + 1, r);
int s1 = 0;
int lefts = 0;
for (k = center; k >= l; k--)
{
lefts += v[k];
if (lefts>s1)
s1 = lefts;
}
int s2 = 0;
int rights = 0;
for (k = center + 1; k <= r; k++)
{
rights += v[k];
if (rights>s2)
s2 = rights;
}
sum = s1 + s2;
if (sum<lsum)
sum = lsum;
if (sum<rsum)
sum = rsum;
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[6] = { -20, 11, -4, 13, -5, -2 };
cout <<"最大子段长度为:"<< MaxSum_test(arr, 0, 5) << endl;
return 0;
}
|
相关文章
- 最大子段和(c++)
- poweramp最完美设置_十段均衡器的设置和参数[附带推荐poweramp均衡器设置]
- 同一段C++代码在win下和linux下同时编译时产生的头文件包含问题及解决
- HDU 1003(A - 最大子段和)
- 关于c++ template的branching和Recursion的一段很好的描述
- 【动态规划】最大连续子序列和,最大子矩阵和,最大m子段和
- 史上最简单 OpenCV for C++ 在 Windows 和 Ubuntu 上编译安装使用教程
- SPOJ GSS1 静态区间求解最大子段和
- 动态规划求解最大子段和 (两种写法+还原最优解)
- 51nod 1049 1049 最大子段和 (dp)