#include "stdio.h"
#include <iostream>
#include <vector>
using namespace std;
struct dp {
int max;
int s;
};
typedef vector<vector<dp> > vvd;
void get(vvd& vd, vector<int> a)
{
vd[0][0].s = a[0];
vd[0][0].max = 0;
for (int i = 1; i < a.size(); i++)
{
if (a[i] > a[vd[0][i - 1].max])
{
vd[0][i].s = vd[0][i - 1].s + a[i];
vd[0][i].max = i;
}
else
{
int m = vd[0][i - 1].max + 1;
if (i != m)
{
if (a[i] > a[vd[m][i - 1].max])
{
vd[m][i].s = vd[m][i - 1].s + a[i];
vd[m][i].max = i;
if (vd[m][i].s > a[vd[0][i - 1].max])
{
vd[0][i].s = vd[0][i - 1].s - a[vd[0][i - 1].max] + vd[m][i].s;
vd[0][i].max = i;
}
else
{
vd[0][i] = vd[0][i - 1];
}
}
else
{
vd[0][i] = vd[0][i - 1];
vd[m][i] = vd[m][i - 1];
}
}
else
{
vd[0][i] = vd[0][i - 1];
vd[i][i].s = a[i];
vd[i][i].max = i;
}
}
}
}
int main()
{
int n;
cin >> n;
while (n != 0)
{
vector<int> a;
a.resize(n);
vvd vd;
vd.resize(n);
for (int i = 0; i < n; i++)
{
vd[i].resize(n);
cin >> a[i];
}
get(vd,a);
cout <<vd[0][n - 1].s << endl;
cin >> n;
}
}
杭电oj平台输入格式 输出格式 都比较的死 差一个空格和回车都不行 输入输出格式都得一样
给你提供一个错误样例吧
5 1 2 1 2 3