題目描述
給定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...