//============================================================================ // Name : 13子数组的最大乘积.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> using namespace std; const int MAX=10000; int MaxSubMartrix(int *a,int length) { int Number0=0,NumberPositive=0,numberNegative=0; int biggestPositive=0,smallPositive=MAX,biggestNegative=-MAX,smallMegative=0; for(int i=1;i<=length;i++) { if(a[i]==0) Number0++; else if(a[i]>0) { NumberPositive++; if(a[i]>biggestPositive) biggestPositive=a[i]; if(a[i]<smallPositive) smallPositive=a[i]; } else { numberNegative++; if(a[i]>biggestNegative) biggestNegative=a[i]; if(a[i]<smallMegative) smallMegative=a[i]; } } cout<< Number0<<" "<<NumberPositive<<" "<<numberNegative<<endl; cout<<biggestPositive<<" "<<smallPositive<<" "<<biggestNegative<<" "<<smallMegative<<endl; int deleteNumber; if(Number0>1) return 0; else if(Number0==1) { if(numberNegative&0x01) { return 0; } else { deleteNumber=0; } } else if(numberNegative&0x01)//为负数 { deleteNumber=biggestNegative; } else if(!numberNegative&0x01) //为正数 { if(NumberPositive>0) { deleteNumber=smallPositive; } else { deleteNumber=smallMegative; } } cout<<deleteNumber<<endl; int sum=1; for(int i=1;i<=length;i++) { if(a[i]!=deleteNumber) sum*=a[i]; } return sum; } int main() { int a[11]={0,1,3,-2,4,6,3,-9,0,9,10}; cout <<MaxSubMartrix(a,10)<< endl; return 0; }