#include<iostream>
#include<algorithm>
#define INF 0x3f3f3f
using namespace std;
int dp[10001];
int num[10001];
int main()
{
int n;
while (cin >> n,n)
{
for (int i = 1; i <= n; i++)
cin >> num[i];
dp[1] = num[1];
for (int i = 2; i <= n; i++)
{
dp[i] = num[i];
for (int j = 1; j <= i - 1; j++)
{
if (num[i] > num[j])
dp[i] = max(dp[j] + num[i], dp[i]);//脑抽第一次这里写成num[i] 状态转移方程理解很重要 状态是在不断变的
}
}
int maxnum = dp[1];
for (int i = 1; i <= n; i++)
if (dp[i] > maxnum)
maxnum = dp[i];
cout << maxnum << endl;
}
}
HDU1087 最简单的lis动态规划
最新推荐文章于 2024-04-27 14:04:17 发布