第九章 動態規劃 1305 Maximum sum

2021-10-05 15:33:47 字數 1331 閱讀 9204

【輸入樣例】110

1 -1 2 2 3 -3 4 -4 5 -5

【輸出樣例】

13【提示】

就是求最大子段和問題,樣列取2,2,3,−3,4和5,baidu搜poj 2479 maximum sum,可獲得大量經典最大子段和問題的題目解析,本題o(n2)演算法超時,必須用o(n)演算法。

思路:從左到右分別求出它們所在位置的最大連續和,然後從右到左求出它們所在的最大連續和,接著就是a[i]+b[i+1],a陣列代表著從左到右,b代表著從右到左所以不斷的比較a[0]+b[1],a[1]+b[2]求最大值即可,怎樣求解最大值(如果當前的資料和小於零,很明顯,將它加入到後面的計算中,肯定會減少最大值很簡單的道理,-1+4<0+4,如果之前的取值小於零,拋棄它,重新賦值為零,然後通過maxs不斷更新當前的最大值。

#include

#include

#include

using

namespace std;

const

int maxn=

50000+5

;int t,m;

int a[maxn]

;int dp[maxn]

;int

main()

dp[0]

= a[0]

;int sum = a[0]

;int ans = a[0]

;for

(int i =

1; i < m; i++

) sum +

= a[i];if

(sum > ans)

dp[i]

= ans;

} sum = a[m-1]

;int max = dp[m-2]

+ sum;

ans = a[m-1]

;for

(int j = m-

2; j >=

1; j--

) sum +

= a[j];if

(sum > ans)

max =

max(max,dp[j-1]

+ans)

;//通過max不斷更新當前的最大值

}printf

("%d\n"

,max);}

return0;

}

第九章 動態規劃 1300 雞蛋的硬度

1300 雞蛋的硬度 時間限制 1000 ms 記憶體限制 65536 kb 題目描述 最近xx公司舉辦了乙個奇怪的比賽 雞蛋硬度之王爭霸賽。參賽者是來自世界各地的母雞,比賽的內容是看誰下的蛋最硬,更奇怪的是xx公司並不使用什麼精密儀器來測量蛋的硬度,他們採用了一種最老土的辦法 從高度扔雞蛋 來測試...

第九章 動態規劃 1301 大盜阿福

1301 大盜阿福 時間限制 1000 ms 記憶體限制 65536 kb 提交數 3388 通過數 1400 題目描述 阿福是一名經驗豐富的大盜。趁著月黑風高,阿福打算今晚洗劫一條街上的店鋪。這條街上一共有 n 家店鋪,每家店中都有一些現金。阿福事先調查得知,只有當他同時洗劫了兩家相鄰的店鋪時,街...

C語言 第九章動態記憶體

手動申請 手動釋放 什麼時候使用動態記憶體 1.儲存比較大的資料量時 2.記憶體大小可以變化時 include void malloc size t size 申請size個位元組的動態記憶體 返回申請到的動態記憶體的起始位址 如果申請失敗返回 nullvoid calloc size t nmem...