動態規劃之最大非空子段和

2021-09-22 22:54:16 字數 764 閱讀 6288

題目:有一排n個整數,a1,a2,a3,......(1<=n<=1e6)(1e-9<=ai<=1e9)。求最大的非空字段和。

因為當這個陣列全為負數時,根據那個**,求出最後的結果是0,相當於是空子段。

本題應設定,ans為足夠小的負數,當陣列全為負數時,最後的結果就是陣列中最大的值,如果不是全負數,就還是最大欄位和的思路。**如下:

#includeusing namespace std;

int main()

long long ans=-10000000000;

long long sum=0;

for(int i=1;i<=n;i++)

if(a[i]>0&&ans<0)

if(ans>0)

if(sum<0)

}cout << ans;

return 0;

}

上面的**時自己寫的,感覺想的時候有點繞,**不夠清晰。

以下的**是別的博主的,思路大同小異,但是**的可讀性比上面的強。

#includeusing namespace std;

#define max 1000005

#define nil 1e9

typedef long long ll;

ll a[max];

int main()

cout << ans << endl;

} return 0;

}

動態規劃之最大子段和問題

問題描述 給定由n個整數 包含負整數 組成的序列a1,a2,an,求該序列子段和的最大值。當所有整數均為負值時定義其最大子段和為0。依此定義,所求的最優值為 例如,當 a1,a2 a3 a4 a5 a6 2,11,4,13,5,2 時,最大子段和為 11 4 13 20 1 最大子段和問題的簡單演算...

動態規劃之最大子段和問題

有一由n個整數組成的序列a 求該序列如 a i a i 1 a j 的子段和的最大值。如果序列中全部是負數則最大子段和為0,依此定義,所求的最優值max,1 i j n。輸入 n 序列的長度 序列值輸出 最大子段和 例如 輸入 6 2,11,4,13,5,2 輸出 20演算法可通過動態規劃求解 我們...

動態規劃之最大子段和問題

問題描述 給定由n個整數 包含負整數 組成的序列a1,a2,an,求該序列子段和的最大值。當所有整數均為負值時定義其最大子段和為0。依此定義,所求的最優值為 例如,當 a1,a2 a3 a4 a5 a6 2,11,4,13,5,2 時,最大子段和為 11 4 13 20 1 最大子段和問題的簡單演算...