問題描述:乙個有n個元素的陣列,元素中有正有負,陣列中乙個或者連續多個元素可以組成乙個子陣列,求子陣列中和最大的?
方法一:暴力法
三層迴圈,找出所有的子陣列,並求出他們對應的和,再取最大值。**如下:
package array;
public
class
maxsubarray
return maxsum;
}public
static
void
main
(string[
] args)
; system.out.
println
("最大子數和為:"
+maxsubarray
(array));
}}
方法二:重複利用已計算的的子陣列和例如:sum[ i , j ] = sum [ i , j - 1 ] + arr[ j ] ,採用這種方式可以省去計算 sum [ i , j - 1 ] 的時間。**如下:
package array;
public
class
maxsubarray2}}
return maxsum;
}public
static
void
main
(string[
] args)
; system.out.
println
("最大子陣列之和:"
+maxsubarray
(array));
}}
方法三:動態規劃法根據陣列的最後乙個元素arr[ n - 1 ] 與最大子陣列的關係分為一下三種:**如下:1.最大子陣列包含arr [ n - 1 ],即 arr [ n - 1 ] 結尾。
2.arr [ n - 1 ] 單獨構成最大子陣列。
3.最大子陣列不包含 arr [ n - 1 ] ,那麼求 arr [ 1 , … , n - 1 ] 的最大子陣列可以轉化成為求arr [ 1 , … , n - 2 ]的最大子陣列。
假設已經計算出
package array;
public
class
maxsubarray3
public
static int maxsubarray
(int array)
return all[n-1]
;}public
static
void
main
(string[
] args)
; system.out.
println
("最大子陣列和:"
+maxsubarray
(array));
}}
如何求最大子陣列之和
問題概述 有乙個長度為n的陣列,這n個元素可以使正數也可以是負數,陣列中連續的乙個或多個元素可以組成乙個連續的子陣列,乙個陣列可以有多個這樣連續的子陣列,求子陣列各個元素和的最大值。找出所有子陣列元素,進行求和,然後找到和的最大值 public static int findsecond int a...
求最大子陣列之和
在乙個有n個元素的陣列中,其中每個元素的值可正可負,在該陣列中求乙個連續子陣列,使得該陣列的和最大 拿到這個題首先想到的是暴力法,即暴力迴圈求所有陣列的和,因此可以求的該陣列的最大值,其時間複雜度為o n 3 時間複雜度較高,我們可以用分治法和動態規劃來做這道題。其中分治法時間複雜度為o n log...
陣列中最大子陣列之和
一 目的 熟悉程式設計風格 自學簡單 python 簡單效能測試 二 程式設計 1 測試工具及注意事項 使用visual studio 2017進行編譯,求陣列中最大陣列之和。注意 1.題目說的是子陣列是連續的 2.題目只要求和,不需要返回陣列的具體位置 3.陣列的元素是整數 2 單元測試配置過程 ...