分治法 最大欄位和

2021-07-10 18:35:03 字數 661 閱讀 9852

問題描述:

給定由n個整數(可能有負數)組成的序列,求一段連續的子串行,要求該序列和最大,並求出最大值。

分析:

將該序列平分為兩段(a1..an/2;an/2….an),最大欄位段和有三種情況,1:為左邊的最大子段和leftsum,2:為右邊的最大欄位和rightsum,3:由左邊靠近中點的最大連續子段+右邊靠近中點的最大連續子段midsum。所以最終結果為三者中的最大值(max(leftsum,rightsum,midsum))。

#include using namespace std;

int maxsum(int a,int

left,int

right);

int main()

int maxsum(int a,int

left,int

right)

s2=-9999,rights=0;

for(int i=center+1;i<=right;i++)

midsum=s1+s2;

if(midsumelse

sum=midsum;

if(sumsum=rightsum;

}return sum;

}

DP 分治 最大字段

首先用分治法 include stdio.h int maxsum int a,int left,int right for i center 1 i right i sum s1 s2 if sumvoid main 然後是動態規劃方法 include stdio.h int maxsum int...

暴力法 分治法 動態規劃法求解最大欄位和

實驗專案4 最大子段和問題 發現這個博主的 實在是太棒了 1.問題分析 給定由n個整數 可能有負整數 組成的序列 2.演算法設計思路 暴力法 對於起點 i,遍歷所有長度為1,2,n i 1的子區間和,遍歷所有的字段,找出最大欄位和。分治演算法 求解區間及其最大和,從結構上是非常適合分治法的,因為所有...

最大欄位和

include include include include include using namespace std 最大欄位和問題描述 給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整均為負數時定義子段和為0,...