#include
using namespace std;
// 求陣列中子陣列的最大值
// 引數1:陣列,引數2:陣列起始位置,引數3:陣列尾位置的下乙個位置
int maxsum(int *,int,int);
int selmaxvalue(int,int,int); // 選擇最大值
int find_max_crossing_value(int *,int,int,int);
int main()
;int len_a=sizeof(a)/sizeof(int);
sum_max=maxsum(a,0,len_a-1); // 求子陣列的最大值
cout<<"子陣列最大值:"return 0;
}// 原陣列最大子段三種情況:1.和陣列前一半最大子段和相同2,和陣列後一半最大子段和相同
// 3.和跨過其中中間兩個元素a[n/2-1]和a[n/2]
int maxsum(int *a,int low,int high)
else
}// 跨過其中中間兩個元素a[n/2-1]和a[n/2]的最大值
int find_max_crossing_value(int *a,int low,int mid,int high)
for(int i=mid+1;i<=high;++i)
return (mid_sum1+mid_sum2);
}int selmaxvalue(int iv1,int iv2,int iv3) // 選擇最大值
陣列中子陣列和的最大值
輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為1,2,3,10,4,7,2,5,和最大的子陣列為3,10,4,7,2,因此輸出為該子陣列的和18。例如輸入的陣列為1,2,3,1...
獲取陣列中子串乘積的最大值
題目 給定乙個陣列,例如arr 那個8和4相乘得到32,是連續數相乘得到的最大值,得到該值即可。解答 注意此過程的三種情況即可,最大數成為最大,最小數變成最大,當前數最大。時間複雜度o n public static double getmax double arr double max arr 0...
分治理法求陣列最大值
如今給出乙個n個元素的書組,元素個數n。須要求出最大最小值.方法1.用max,min。分別記錄陣列最大最小值,順序掃瞄陣列,不斷替換更新max。min,max,min的初始值都為陣列中的第乙個元素 方法2.1.假設陣列中僅僅有乙個元素。那麼它是最大也是最小值 2.否則陣列中多於乙個數。則能夠求出左邊...