每週堅持搞三種演算法問題,介紹一下最大子陣列問題
演算法思路:分治策略求解,將問題不斷分為更小的問題,進而求解
問題描述:求陣列中相連著的數 相加值最大,例如",輸出最大為2+3-4+21=22"
**:
#define _crt_secure_no_warnigns
#include #include #include #define n 10
#define min_float -flt_max
float find_max_crossing_subarray(float array,int low,int mid,int high)//輸出過中點的最大和
} int max_right;
float right_sum = min_float;
float rsum = 0;
for (i = mid + 1; i <= high; i++) }
sum = left_sum + right_sum;
return sum;
}float find_maximum_subarray(float array,int low,int high)//判斷兩邊和過中點陣列和哪個大
else
else if (right_sum >= left_sum && right_sum >= cross_sum)
else
} }void main()
; float sum = find_maximum_subarray(array, 0, 9);
printf("%.1f", sum);
system("pause");
}
最大子陣列問題
顧名思義,最大子陣列問題是求乙個陣列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 陣列元素賦...
最大子陣列問題
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 ...