順序表應用8:最大子段和之動態規劃法
Description
給定n(1<=n<=100000)個整數(可能為負數)組成的序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。當所給的整數均為負數時定義子段和為0,依此定義,所求的最優值為: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n。 例如,當(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)時,最大子段和為20。
注意:本題目要求用動態規劃法求解,只需要輸出最大子段和的值。
Input
第一行輸入整數n(1<=n<=100000),表示整數序列中的資料元素個數;
第二行依次輸入n個整數,對應順序表中存放的每個資料元素值。
Output
輸出所求的最大子段和
Sample
Input
6 -2 11 -4 13 -5 -2
Output
20
Hint
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main()
{
int n, b = 0, maxx = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
}
for(int i = 1; i <= n; i++)
{
b = max((b + a[i]), a[i]);
if(b > maxx)
{
maxx = b;
}
}
printf("%d\n", maxx);
return 0;
}
相關文章
- 順序表應用7:最大子段和之分治遞迴法遞迴
- 動態規劃求解最大子段和 (兩種寫法+還原最優解)動態規劃
- 分治法 && 動態規劃 洛谷P1115 最大子段和動態規劃
- 動態規劃---例題3.最大子段和問題動態規劃
- 順序表應用5:有序順序表歸併
- 順序表應用6:有序順序表查詢
- 動態規劃法動態規劃
- 關於動態規劃法動態規劃
- 動態規劃之數的劃分動態規劃
- 動態規劃-最長公共子序列動態規劃
- 動態規劃——最長公共子序列動態規劃
- 動態規劃:最長上升子序列動態規劃
- 動態規劃求最長降序序列動態規劃
- 最長上升子序列動態規劃動態規劃
- 順序表應用3:元素位置互換之移位演算法演算法
- 動態規劃(最長公共子序列LCS)動態規劃
- 動態規劃-最長上升子序列模型動態規劃模型
- 動態規劃---求硬幣最優解動態規劃
- 順序表應用1:多餘元素刪除之移位演算法演算法
- 順序表應用4:元素位置互換之逆置演算法演算法
- CMake和靜態庫順序
- 順序控制和狀態機之間的差別
- 動態規劃最大欄位和動態規劃
- 遞迴、分治和動態規劃遞迴動態規劃
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- 動態規劃動態規劃
- [動態規劃] 六、最長迴文子串動態規劃
- 順序表
- 順序表應用2:多餘元素刪除之建表演算法演算法
- 動態規劃之經典數學期望和概率DP動態規劃
- leetcode_最大子序和LeetCode
- 動態規劃之股票問題123動態規劃
- 動態規劃求解最長上升子序列問題動態規劃
- 最長公共子序列問題—動態規劃sdut動態規劃
- 動態規劃之最短路徑和動態規劃
- 談一談動態規劃和dfs動態規劃
- 快應用tabs和video元件滑動事件優先順序問題IDE元件事件
- [leetcode] 動態規劃(Ⅰ)LeetCode動態規劃