poj 2479 Maximum sum

/* 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); } } }

你可能感兴趣的:(Date,存储)