#include<list>
#include<iostream>
#include<vector>
using namespace std;
vector<int> FindGreatestSumOfSubArray(vector<int> array) {
vector<int> ret;
int F_i = array[0];//用来记录i下标结尾的所有子数组中,最多的和为多少
int max_number = array[0];//记录最大值;
int low = 0;
int high = 0;
int low_max = 0;
int high_max = 0;
for (int i = 1; i < array.size(); i++) {
if (array[i] <= array[i] + F_i) {
F_i = array[i] + F_i;
high = i;
if (max_number < F_i) {
max_number = F_i;
low_max = low;
high_max = high;
}
}
else {
F_i = array[i];
low = i;
high = i;
if (max_number < F_i) {
max_number = F_i;
low_max = low;
high_max = high;
}
}
}
ret.push_back(max_number);
ret.push_back(low_max);
ret.push_back(high_max);
return ret;
}
int main()
{
int a[] = {1,-2,3,10,-4,7,2,-5};
vector<int>array(a, a + 8);
vector<int> ret=FindGreatestSumOfSubArray( array);
for (int i = 0; i < 3; i++) {
cout << ret[i] << endl;
}
system("pause");
return 0;
}
求连续子数组的和,并输出子数组的开始位置和结束位置
最新推荐文章于 2022-03-13 17:36:59 发布
本文深入探讨了一种寻找一维数组中具有最大和的连续子数组的算法。通过动态规划的方法,该算法能有效地找到目标子数组及其起始和结束位置。示例代码展示了如何在数组{1,-2,3,10,-4,7,2,-5}
1234

被折叠的 条评论
为什么被折叠?



