最簡單的「最大子段和」問題
description
給定n個整數(可能為負數)a1,a2,……an。求ai,ai+1,……aj 其中1<=i<=j<=n的子段和的最大值。當所有整數均為負數時我們定義其最大子段和為0。例如:當(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)時,最大子段和為a2+a3+a4=20,i=2,j=4(下標從1開始)這個問題我們稱之為「最大子段和問題」。
在課堂上,我們假定n<=100,今天我們把n的範圍規定修改為n<=200,你的任務是設計乙個程式解決它。
input
輸入由兩行,第一行為n;第二行為n個整數。
output
輸出也有兩行,第一行為:「from=***,to=***」;第二行為:「maxsum=***x」,參見樣例。
sample input
6-2 11 -4 13 -5 -2
sample output
from=2,to=4
maxsum=20
#include
#include
using
namespace std;
int a[
1001
],n,mx,from,to,s;
intmain()
from=1;
to=n;
mx=0;
for(i=
1;i<=n;i++)}
}printf
("from=%d,to=%d\n"
,from,to)
;printf
("maxsum=%d\n"
,mx);}
return0;
}
最大子段和問題
給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如a i a i 1 a j 的子段和的最大值。當所給的整均為負數時定義子段和為0 分治法 分析 首先將陣列分為兩部分,最大子段和 可以在陣列的左半部分也可以在右半部分,也可以橫跨分割點,因此我們只需要用分治思想求出左邊最大...
最大子段和問題
給定n 個整數 有可能是負數 組成的序列,要求分別用蠻力法,減治法和動態規劃法,求最該序列的最大子段和,並對它們的效率進行比較分析。也稱窮舉法或列舉法,是一種簡單直接地解決問題的方法,常常基於問題的描述,所以,蠻力法也是最容易應用的方法。它依賴的基本技術是遍歷,採用一定的策略依次處理待求解問題的所有...
最大子段和問題
問題描述 給定n個整數 可能為負數 組成的序列a 1 a 2 a 3 a n 求該序列如 a i a i 1 a j 當所給的整數均為負數時定義子段和為0.如果序列中全部是負數則 最大子段和為0,依次所定義 所求的最優值max,1 i問題解析 動態規劃演算法 dp i 包含元素i的子段和 dp 0 ...