void MaxMutiSubArray(int *a) {
if (a == NULL) {
cout << "input illegal" << endl;
return;
}
if (SIZE == 1) {
cout << "maxMuti:" << a[0] << endl;
return;
}
int maxMuti = a[0];
int maxBeginIndex = 0, maxEndIndex = 0;
int maxEnd = a[0], minEnd = a[0];
for (int i = 1; i < SIZE; ++i) {
int end1 = maxEnd * a[i];
int end2 = minEnd * a[i];
maxEnd = max(max(end1, end2), a[i]);
minEnd = min(min(end1, end2), a[i]);
if (maxMuti < maxEnd) {
maxMuti = maxEnd;
maxEndIndex = i;
}
}
//计算开始下标
int maxTmp = maxMuti;
for (int i = maxEndIndex; i >= 0; --i) {
maxTmp /= a[i];
if (maxTmp == 1) {
maxBeginIndex = i;
break;
}
}
cout << "maxBeginIndex: " << maxBeginIndex << " ,maxEndIndexIndex:"
<< maxEndIndex << endl;
cout << "MaxMutiArray:" << endl;
for (int i = maxBeginIndex; i <= maxEndIndex; ++i) {
cout << " " << a[i];
}
cout << endl << "maxMuti:" << maxMuti << endl;
}