求一个数组元素和最大的连续子序列
如 a = [-1,2,-1,3,4,5,-20,8]
返回 b = [2,-1,3,4,5]
思路:
vector<int> v{-1,2,-1,3,4,5,-20,8};
int main()
{
int n = 8;
int sum, ans, st, ed, ans_st, ans_ed;
sum = ans = st = ed = ans_st = ans_ed = v[0];
for (int i = 1; i < n; i++)
{
if (sum >= 0) // 和为正,继续加
{
sum += v[i];
ed = v[i]; // 更新tail
}
else // 和为负,则当前情况下,只取下边的第一个元素做和,并更新头尾
{
sum = v[i];
st = v[i];
ed = v[i];
}
if (sum > ans)
{
ans = sum;
ans_st = st;
ans_ed = ed;
}
}
if (ans >= 0)
{
cout << ans_st << " " << ans_ed << endl;
} else
{
cout << v[0] << v[n - 1] << endl;
}
return 0;
}
https://blog.csdn.net/qq_39813898/article/details/81478769
这个好好看看
https://blog.csdn.net/yuanba_xs/article/details/56674678