求解最大子串行和問題

2021-08-26 18:55:57 字數 649 閱讀 3363

原題:

給定乙個陣列,其中元素有正,也有負,找出其中乙個連續子串行,使和最大;

不想說明什麼,我們資料結構老師第一節課就給我們講這個,以前給實現過乙個暴力演算法版的演算法複雜度

o(n2)

,現在實現乙個動態規劃版的;

/* *

* 求解最大子串行和問題o(n)演算法;

* @param array

*/public static void maxsubsum(int array)else if(cursum < 0)

} system.out.println("最大自序列和是:"+maxsum);

system.out.println("start:" + start + ", end: " + end);

system.out.print("自序列是:");

for(int i = start; i <= end; i++)

system.out.println();

}

其基本思想就是擁有最大自序列和的陣列不可能是以負數開始的,所以如果當前和小於0,那麼字陣列必定向前推進1

,而其他情況下不會改變最大和和起始終止位置。比起暴力版的這個好啊演算法複雜度為o

(n)。

最大子串行和問題求解

基本思想 窮舉式的嘗試所有可能,通過三層迴圈計算所有子串行的和。演算法步驟 1.第一層迴圈從0到n 1,確定子串行的開始位置 2.第二層迴圈從第一層迴圈變數開始到n 1,確定子串行的結束位置 3.第三層迴圈從第一層迴圈變數開始到第二層迴圈變數結束,計算這個子串行的和,並與最大子串行和比較,如果大於最...

最大子串行和問題的求解

問題描述 給定 可能存在負值 整數a1,a 2.a n,求最大子串行和。如果所有的整數均為負數,則最大子串行和為0.列如 對於輸入 2,11,4,13,5,2,該輸入的最大子串行和為20 11 4 13 現在我們將敘述四個演算法來求解最大子串行和問題。1.該演算法是使用窮舉法來嘗試所有的可能 演算法...

最大子串行和問題的求解

怎麼求出乙個陣列最大的連續累加之和呢?方法有很多,我們目前只講乙個比較不錯的方法,該方法使用了分治遞迴的思想。我們假設下面是我們需要計算的陣列,其中a是游標,我可以知道游標將陣列分成了兩段,最大值有可能出現在前半段也有可能出現在後半段,還有一種情況是跨越a 中間 相加的一段。1,3,5,7 a,9,...