#include//使用時,請使用maxarray函式
using namespace std;
int max(int a,int b,int c)//返回三個數中最大者。
void f(int *low,int
len,int max0)//引數分別為:陣列首位址,陣列長度,目前求得的最大值
}for(j=0;j/2+t;j++)//從中間往後求和。
}max3=max1+max2;//max3為跨越中點的最大和。
if(max0>max(max1,max2,max3))//當此次尋找到的最大和比上次找到的小,就結束遞迴。
return;
cout<<"最大子陣列的區間為("
<","
<+1
<<")"
<"最大和為"
f(low+x,len
/2-x,max1);
else
if(max(max1,max2,max3)==max2)//如果最大和產生在後半段,那麼在後半段再次尋找。
f(low+len
/2,y,max2);
else
if(max(max1,max2,max3)==max3)//如果最大和產生在跨越中點的部分,那麼就在跨越中點的部分再次尋找。
f(low+x,len
/2-x+y,max3);
}void maxarray(int *low,int
len)//為了使用方便,把第三個引數設定在最大子陣列的主要函式內,這樣使用時就只需輸入兩個引數了
int main()
; maxarray(a,16);
}
最大子陣列問題
顧名思義,最大子陣列問題是求乙個陣列array中 和最大的非空連續子陣列 這樣的連續子陣列我們叫做最大子陣列,它的應用也有 很多,比如說找出時間序列中兩個時間節點使得這兩個時間節點對應的值的落差最大,如下圖 對於這類問題,通過求原始時間序列的一階差分得到序列array,此時求得array的最大子陣列...
最大子陣列問題
include include include typedef struct num num extern void displayarray const int a,const int n 顯示陣列元素值 extern void buildarray int a,const int n 陣列元素賦...
最大子陣列問題
每週堅持搞三種演算法問題,介紹一下最大子陣列問題 演算法思路 分治策略求解,將問題不斷分為更小的問題,進而求解 問題描述 求陣列中相連著的數 相加值最大,例如 輸出最大為2 3 4 21 22 define crt secure no warnigns include include include...