如何求出最大子陣列之和

2021-10-02 17:26:35 字數 1559 閱讀 7895

問題描述:乙個有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 單元測試配置過程 ...