遍历一遍求最大子串和
2017-06-05 17:30
92 查看
最大子串和(再议)
■.实现方法:采用一般的循环结构,对整个串只需要一遍扫描即可求出最大子串和。
■.实现思想:
●.观察整个整数串的最大子串分布,会发现
●.最大串不可能是从负数开始;
●.也不会包含顺序累加和为负值的子串;
●.只有顺序累加和为正的子串才有可能是最大子串的一部分。
■.代码实现(C++):
template <typename Type> Type maxSubSum(Type *array, int length){ Type maxSum = 0, currMaxSum = 0; for(int i = 0; i < length; i++){ currMaxSum += array[i]; if(currMaxSum > maxSum) maxSum = currMaxSum; else if(currMaxSum < 0) currMaxSum = 0; } return maxSum; }■.测试代码:
int main() { int array[] = {8,-11,4,6,-3,7,-5,2,-1,3}; cout<<"maxSubSum is : "<<maxSubSum(array, 10)<<endl; double arrayB[] = {-3.0, 9.2, -5, 4.8, -9, 7.2}; cout<<"maxSubSum is : "<<maxSubSum(arrayB, 6)<<endl; return 0; }
相关文章推荐
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- C语言学习5:数组定义,数组名的含义,数组作为函数参数,数组赋值,数组左右移动,最大最小,反向遍历,冒泡排序,sizeof 和strlen区别,gets和puts,strcpy,strcat,strcmp,strchr,strstr,strlen
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- C++实现求两个字符串的最大公共子串
- 求最大回文子串(马拉车算法)
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 求最大公共子串的算法
- leetcode_434. Number of Segments in a String 计算字符串中段的个数,只需遍历一遍字符串
- 最大连续子序列和,乘积,最长递增子串,最长公共子串,子序列等问题(动态规划等)
- HDU 1159 Common Subsequence(dp最大公共子串)
- [华为机试题]最大连续递增子串
- 使用数据结构,最大上升子串问题
- 快排的非递归算法和最大子串乘积
- java/C++取两个字符串的最大相同子串
- 第八届蓝桥杯【Java B组】最大公共子串
- 初始化执行 这里把所有的接口都遍历一遍 存到权限表里面
- 初始化执行 这里把所有的接口都遍历一遍 存到权限表里面
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
- 求最大子串和 最长子串的java写法
- Java练习之最大相同子串