題目描述
給定一整型數列,找出連續非空子串,使得該子串行的和最大,其中,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 最大連續子串行 命題人 外部匯入 時間限制 1.000 sec 記憶體限制 32 mb 解決 493提交 1082統計 題目描述 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子串行中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為...最大連續子串行和 問題
最大連續子串行和問題
問題 A 最大連續子串行