暴力解法n2版本,不必多說,**直接走起o(n2)這裡為了簡便就只返回subarray maxsum的值 如果還要有陣列下標 自行改動即可:
int maxsubary(int *s,int n)
int maxsum = 0 ;
int sum = 0 ;
int i ;
int j;
for(i=0; isum = 0;
for(j=i; jsum = sum + s[j];
if(sum > maxsum)}}
return maxsum ;
暴力解法n3版本:
intmaxsubarray(
int*s,
intn)
if(sum > maxsum)
} }
return
maxsum;
} 分治演算法 o(nlgn) :
intmaxsubarraysumdc_inarray(
inta,
intleft,
intright)
intrightsecsum=0,rightsecmaxsum=0;
/*right section*/
for(
inti=center+1;i<=right;++i)
intcentersum=leftsecmaxsum+rightsecmaxsum;
/*get the maxsum from 3 sums*/
intressum=centersum;
if(ressum
if(ressum
return
ressum;
} 動歸演算法o(n):
int maxsubarray(int *s, int n)
else
if(sum > maxsum)
}return maxsum ;
}
最大子陣列問題
顧名思義,最大子陣列問題是求乙個陣列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...