最大子段和算法
2010-06-02 17:25
260 查看
给定由n个整数组成的系列a1,a2,a3,...,an,求该序列的子段和的最大值。当所以整数均为负整数时定义最大子段和为0。
例如序列[-2,11,-4,13,-5,-2]的最大子段和为20.
例如序列[-2,11,-4,13,-5,-2]的最大子段和为20.
#include <stdlib.h> int LSS_Enumerate(const int a[],int count) { int i; int j; int iMax = a[0]; int sum[10000]; sum[0] = 0; for(i = 1; i <= count ;i++) { sum[i] = sum[i-1] + a[i-1]; //sum[i]代表了序列从1到i的和 } for(i = 0; i < count ;i++) { for (j = i; j < count ;j++) { //如果要算i到j的和,只需将sum[j]减去sum[i-1]即可 if ((sum[j+1] - sum[i]) > iMax) { iMax = sum[j+1] - sum[i]; } } } return iMax; } int main(int argc, char* argv[]) { int a[] = {-2,11,-4,13,-5,-2}; int ret = LSS_Enumerate(a,6); printf("LSS_Enumerate = %d/n",ret); system("pause"); return 0; }
相关文章推荐
- 最大子段和O(n)算法;不是动态规划;思路挺独特;
- 求最大子段和的一些算法
- 算法笔记——【动态规划】最大子段和
- 三种算法求最大子段和问题——Java实现
- 从最大子段和问题看算法的优化问题
- 【算法设计】最大子段和问题解析(对应算法第三题)
- 从最大子段和问题看算法的优化问题
- [算法] 求环形数组中和值最大子段
- 三种算法实现最大子段和问题(Java实现)
- 【算法设计】最大子段和问题解析(对应算法第三题)
- 最大子段和算法
- 三种算法求最大子段和问题——Java实现
- 最大子段和算法 不同复杂度方法实现
- 最大子段和问题的四种算法(暴力法、优化后的暴力法、分治算法、动态规划算法)
- 求数列的最大子段和的两种方法(包括时间复杂度为线性时间的算法)
- 算法分析与设计-10- 最大子段和的动态规划算法
- 最大子矩阵问题;枚举行的组合,然后利用一维最大子段和的DP算法;
- 最大子段和_算法与数据结构_Python
- [算法]最大子段和问题
- 0013算法笔记——【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题