陣列中子陣列最大值 分治思想

2021-07-05 22:47:25 字數 805 閱讀 6734

#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.否則陣列中多於乙個數。則能夠求出左邊...