乙個簡單的問題 最大連續子串行和

2022-04-30 13:15:12 字數 908 閱讀 1570

題目描述

給定一整型數列,找出連續非空子串,使得該子串行的和最大,其中,1<=x<=y<=n。

分析繼續用動態規劃的思路來解決

由於是連續的子串行,所以可以用f[n]儲存到第n個數時的最大值,然後取其中的最大值就可以了

**實現:

int f[maxn]=;cin>>n;

for(int i=1;i<=n;i++)

cin>>f[i];

if(f[i-1]>0) f[i]+=f[i-1];

int maxsum=max(f,f+n);

也行我們不但想知道連續子串行的最大和是多少,我們還想知道子串行在數列裡面的開始和結束的座標

我們對上面的**進行一些改進就可以滿足需要

//準確的說,不排除最大連續子串行前面的一部分和為0,所以上面的f[i-1]>0改為f[i-1]>=0,這樣求出來的是符合要求的最長的子串行

我們需要定義maxsum,l,r,l,r;分別儲存當前的最大和,當前序列的左右座標

以及當前最大和的座標

開始,對maxsum=無窮小

l=1,r=0,

**:int f[maxn]=;

int l,r,l,r,maxsum;

maxsum=-nif;

l=1;r=0;

cin>>n;

for(int i=1;i<=n;i++)

cin>>f[i];

if(f【i-1]>=0)

f【i】+=f【i-1];

++r;//當前座標右移

else//不滿足要求,那麼當前左右座標修改到當前位置

r=l=i;

if(f[i]>maxsum)

maxsum=f[i];

l=l;r=r;

cout

最大連續子串行和 問題

為了證書,重新開始刷資料結構,原本也就是學的一知半解的,上來就給我來了乙個最大子串行和問題,搞得我很無奈,貌似hdu1003就是這個問題.第一 重新定義乙個新的sum陣列,然後進行儲存連續子串行的和,遇到前面的加和sum i 1 小於0,就直接讓sum i a i include include i...

最大連續子串行和問題

第一次看 資料結構與演算法分析 c語言描述 這本書的時候,被書中一上來就給的最大子串行和問題給直接鎮住了。直觀感覺就是好難,好牛逼。問題描述 給定整數k1,k2,k3,kn,求從第i個數到第j個數的最大值。如果所有整數均為負數,那麼最大子串行和規定為0 根據題目描述,最直接的演算法就是窮舉所有的從i...

問題 A 最大連續子串行

問題 a 最大連續子串行 命題人 外部匯入 時間限制 1.000 sec 記憶體限制 32 mb 解決 493提交 1082統計 題目描述 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為...