最大連續子串行 DP動態規劃

2022-08-19 18:09:09 字數 1372 閱讀 6792

時間限制: 1 sec  記憶體限制: 128 mb

提交: 44  解決: 20

[提交][狀態][討論版]

給定 k 個整數的序列 ,其任意連續子串行可表示為 ,其中1 <= i<= j <= k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列 ,其最大連續子串行為 ,最大和為20。編寫程式得到其中最大子串行的和並輸出該子串行的第乙個和最後乙個元素的下標。

測試輸入包含若干測試用例,每個測試用例佔2 行,第 1 行給出正整數 k( <100000) ,第 2 行給出 k 個整數,每個整數的範圍-10000至10000 ,中間用空格分隔。當k 為0 時,輸入結束,該用例不被處理。

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

86 -2 11 -4 13 -5 -2 1020-10 1 2 3 4 -5 -23 3 7 -21 6 5 -8 3 2 5 0 1 10 38-1 -5 -2 3 -1 0 -2 04 -1 -2 -4 -30
27 0 727 10 193 3 30 0 0

中南大學計算機&軟體複試qq群552889929

2023年中南大學研究生複試機試題

#include#include

#include

using

namespace

std;

#define m 100005

inta[m],b[m];

struct

sumij;

bool cmp(sumij a,sumij b)

struct

sumij ans[m];

intmain()

//printf("i=[%d]\n",i);

int max =b[i];

for(j=i;j//

找最大的和值存入ans中並記錄i,j}}

sort(ans,ans+n,cmp);//

sort(a.begain,a.end,cmp)

if(ans[0].sum<0)

printf(

"%d %d %d\n

",ans[0].sum,ans[0].ii,ans[0

].jj);

//for(i=0;i//

printf("sum=%d i=%d j=%d\n",ans[i].sum,ans[i].ii,ans[i].jj);

}

return0;

}

最大連續子串行 DP動態規劃

時間限制 1 sec 記憶體限制 128 mb 提交 44 解決 20 提交 狀態 討論版 給定 k 個整數的序列 其任意連續子串行可表示為 其中1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列 其最大連續子串行為 最大和為20。編寫程式得到其中最大子串行的和並輸出該子...

最大連續子串行 DP動態規劃

時間限制 1 sec 記憶體限制 128 mb 提交 44 解決 20 提交 狀態 討論版 給定 k 個整數的序列 其任意連續子串行可表示為 其中1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列 其最大連續子串行為 最大和為20。編寫程式得到其中最大子串行的和並輸出該子...

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

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,...