// compute the max sum of a continuours subset
#include <iostream>
#include <cmath>
using namespace std;
int maxMultiply(int *data, int beg, int end)
{
int minRes, maxRes, res;
minRes = maxRes = res = data[beg];
if(beg > end)
return 0;
else if(beg == end)
return data[0];
for(int i = beg+1; i <= end; i++)
{
int minTmp = data[i] * minRes;
int maxTmp = data[i] * maxRes;
minRes = min(min(minTmp, maxTmp), data[i]);
maxRes = max(max(minTmp, maxTmp), data[i]);
res = max(max(minRes, maxRes), res);
}
return res;
}
int main()
{
int data[] = { -2,11,-4,13,-5,-2 };
int res = maxMultiply(data, 0, sizeof(data)/sizeof(int)-1);
cout << res << endl;
//cout << "Hello world!" << endl;
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
int maxMultiply(int *data, int beg, int end)
{
int minRes, maxRes, res;
minRes = maxRes = res = data[beg];
if(beg > end)
return 0;
else if(beg == end)
return data[0];
for(int i = beg+1; i <= end; i++)
{
int minTmp = data[i] * minRes;
int maxTmp = data[i] * maxRes;
minRes = min(min(minTmp, maxTmp), data[i]);
maxRes = max(max(minTmp, maxTmp), data[i]);
res = max(max(minRes, maxRes), res);
}
return res;
}
int main()
{
int data[] = { -2,11,-4,13,-5,-2 };
int res = maxMultiply(data, 0, sizeof(data)/sizeof(int)-1);
cout << res << endl;
//cout << "Hello world!" << endl;
return 0;
}