題意:在乙個序列中尋找兩個連續子串行,並且他們的和最大。
思路:定義兩個陣列。第乙個陣列從前往後記錄前i(1-i)個元素中最大連續子串行,第二個陣列從後往前記錄前i(i-n)個元素中最大子串行和。
**如下:
#include#include#include#include#define max 0x3f3f3f3f
using namespace std;
int num[50005],dp[50005],dp1[50005];
int main()
for(int i=1;i<=n;i++)
dp[1]=num[1];
for(int i=2;i<=n;i++)
for(int i=2;i<=n;i++)
dp1[n]=num[n];
for(int i=n-1;i>=1;i--)
for(int i=n-1;i>=1;i--)
for(int i=1;i<=n-1;i++)
printf("%d\n",max1);
}return 0;
}
POJ 2479的簡單想法
這道題是簡單的dp例題拓展,問題是 給定一行數字,然後求這行數字中兩個連續子串行和的最大值,並輸出 兩個子串行不能有重疊的部分 由於是初學者,可能想法比較侷限。我的總體思路是這樣 這題肯定和最大求子序列有關,然後進行工作 用dp1 i 表示以第i個數結尾的最大子串行的和,用dp i 表示已第i個數為...
POJ 2479 最大子段和
poj 2479 最大子段和 poj 2479嚴格來說不是單純的最大子段和,它是乙個雙向的最大子段和,為了弄清雙向的最大子段和就必須弄清楚單向的最大子序和。單向最大子段和問題如下 在序列a 1.n 任意乙個ai都是整數,有正有負 中找出乙個子串行a p.q 使得m ap ap 1 aq 1 aq最大...
poj2479分步DP精簡成O n 演算法
提取資訊包括從s到t之間的和 但是n較大這樣dp i j 的形式顯然不行,那麼如果轉換 其實我們除了記錄 i,j 之間的和那麼可以記錄以i開頭和以i結尾兩種情況 後來發現根本不用記錄以什麼為開頭或者結尾,每次更新前面一段值就行 725k 438ms include using namespace s...