子数组的最大乘积

来源:互联网 发布:淘宝买茶叶靠谱吗 编辑:程序博客网 时间:2024/05/18 05:02
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;}

1 0
原创粉丝点击