#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int maxsum(vector<int> s,int left, int right)
{
if (left > right)
return 0;
if (left == right)
return max(0, s[left]);
int m = (left + right) / 2;
int lmax = 0, sum = 0;
for (int i = m; i >= left; i--)
{
sum += s[i];
lmax = max(lmax, sum);
}
int rmax = 0;
sum = 0;
for (int i = m + 1; i <= right; i++)
{
sum += s[i];
rmax = max(rmax, sum);
}
return max(maxsum(s,m + 1, right), max(lmax + rmax, maxsum(s,1, m)));
}
int main()
{
vector<int> s = { 31,-41,59,26,-53,58,97,-93,-23,84 };
int n = s.size();
int ret = maxsum(s, 0, n - 1);
cout << ret;
system("pause");
return 0;
}
#include<vector>
#include<algorithm>
using namespace std;
int maxsum(vector<int> s,int left, int right)
{
if (left > right)
return 0;
if (left == right)
return max(0, s[left]);
int m = (left + right) / 2;
int lmax = 0, sum = 0;
for (int i = m; i >= left; i--)
{
sum += s[i];
lmax = max(lmax, sum);
}
int rmax = 0;
sum = 0;
for (int i = m + 1; i <= right; i++)
{
sum += s[i];
rmax = max(rmax, sum);
}
return max(maxsum(s,m + 1, right), max(lmax + rmax, maxsum(s,1, m)));
}
int main()
{
vector<int> s = { 31,-41,59,26,-53,58,97,-93,-23,84 };
int n = s.size();
int ret = maxsum(s, 0, n - 1);
cout << ret;
system("pause");
return 0;
}
3046

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



