演算法筆記 動態規劃 最大連續子串行和

2021-09-29 18:49:04 字數 1191 閱讀 6471

題目描述

給定k個整數的序列,其任意連續子串行可表示為,其中 1 <= i <= j <= k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為20。現在增加乙個要求,即還需要輸出該子串行的第乙個和最後乙個元素。

輸入

測試輸入包含若干測試用例,每個測試用例佔2行,第1行給出正整數k( k<= 10000 ),第2行給出k個整數,中間用空格分隔,每個數的絕對值不超過100。當k為0時,輸入結束,該用例不被處理。

輸出

對每個測試用例,在1行裡輸出最大和、最大連續子串行的第乙個和最後乙個元素,中間用空格分隔。如果最大連續子串行不唯一,則輸出序號i和j最小的那個(如輸入樣例的第2、3組)。若所有k個元素都是負數,則定義其最大和為0,輸出整個序列的首尾元素。

樣例輸入

5-3 9 -2 5 -4

3-2 -3 -1

0樣例輸出

12 9 5

0 -2 -1

#include

#include

#include

#include

using

namespace std;

const

int maxn =

10005

;int k, a[maxn]

, dp[maxn]

;map<

int,

int> mp;

intmaximum_continuous_sequence_sum()

else

}int u =1;

for(

int i =

2; i <= k; i++)}

return u;

}int

main()

}if(!flag)

int u =

maximum_continuous_sequence_sum()

; cout << dp[u]

<<

" "<< mp[u]

<<

" "<< a[u]

<< endl;

}return0;

}

演算法筆記 動態規劃 問題 A 最大連續子串行

給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為20。現在增加乙個要求,即還需要輸出該子串行的第乙個和最後乙個元素。輸入測試輸入包含若干測試用例,每個測試用例佔2行,第1行給出正整數k k...

最大連續子串行之和(動態規劃)

1.問題描述 設n個元素的序列儲存在陣列a 0.n 1 中,求陣列中連續子串行之和的最大值。2.遞推公式 設all i 為子問題a i.n 1 的連續子串行之和的最大值,start i 為從a i 開始的連續序列之和的最大值,因此 all i a n 1 i n 1時,all i maxi 0,1,...

動態規劃 最大連續子串行乘積

題目描述 給定乙個浮點數序列 可能有正數 0和負數 求出乙個最大的連續子串行乘積。分析 若暴力求解,需要o n 3 時間,太低效,故使用動態規劃。設data i 第i個資料,dp i 以第i個數結尾的連續子串行最大乘積,若題目要求的是最大連續子串行和,則易確定狀態轉移方程為 dp i max dat...