poj 2479 Maximum sum
2011-06-18 18:12
351 查看
/* Name:poj 2479 Maximum sum Author: Unimen Date: 10/05/11 18:30 Description: DP 最长连续子序列和 */ /* 解题报告: 1、最大连续子序列和的变形应用 2、该题用一个循环解决,注意其中的技巧 */ #include <cstdio> #include <algorithm> using namespace std; int nMaxI[2]; //存储以I为终点的最大连续子序列的和 int nMaxBeforeI[2]; //存储到I为终点的最大连续子序列的和有可为包括I也有可能不包括I int nMaxSum[2]; //存储包括I的两段子序列的和 int t, n, a, i; int nTotalMax; int main() { while(scanf("%d", &t) != EOF) { while(t--) { scanf("%d", &n); scanf("%d", &a); nMaxI[0] = a; nMaxBeforeI[0] = a; scanf("%d", &a); nMaxI[1] = max(nMaxI[0]+a, a); nMaxBeforeI[1] = max(nMaxBeforeI[0], nMaxI[1]); nMaxSum[1] = nMaxI[0] + a; int nCur = 1; int nPre = 0; nTotalMax = nMaxSum[1]; for(i=2; i<n; ++i) { nCur = nPre; nPre = 1 - nPre; scanf("%d", &a); nMaxI[nCur] = max(nMaxI[nPre]+a, a); nMaxBeforeI[nCur] = max(nMaxI[nCur], nMaxBeforeI[nPre]); nMaxSum[nCur] = max(nMaxBeforeI[nPre]+a, nMaxSum[nPre]+a); nTotalMax = max(nMaxSum[nCur], nTotalMax); } printf("%d/n", nTotalMax); } } }
相关文章推荐
- POJ 2479 Maximum sum
- poj 2479 Maximum sum (最大字段和的变形)
- POJ 2479 动态规划 最大子序列问题(两段) Maximum sum
- POJ 1050 To the Max && POJ 2479 Maximum sum(DP最大连续子段和)
- POJ 2479 Maximum sum[DP]
- POJ 2479 Maximum sum
- POJ 2479 - Maximum sum(线性DP)
- Maximum sum(poj 2479)
- POJ 2479 Maximum sum (DP&双最大子段和)
- POJ 2479 Maximum sum(DP)
- POJ 2479 Maximum sum
- POJ 2479-Maximum sum(线性dp)
- Poj 2479 Maximum sum
- POJ 2479 Maximum sum (DP)
- poj 2479 Maximum sum(递推)
- POJ2479 Maximum sum 最长连续子序列[DP]
- Poj2479-Maximum sum
- POJ 2479 Maximum sum (动态规划)
- POJ-2479 Maximum sum (不连续的最大子段和)
- POJ 2479 Maximum sum(双向DP)