题目描述:
思路:
读题可知,这是一道线性DP问题,按照常规思路做即可
代码:
#include<iostream>
using namespace std;
const int N = 1010;
int n;
int price[N];
int f[N];
int main()
{
scanf("%d", &n);
int m = 0;
for (int i = 1; i <= n; i++)
{
scanf("%d", &price[i]);
}
f[0] = 0;
// f[1] = -price[1];
for (int i = 2; i <= n; i++)
{
int Max=0;
for (int j = 0; j <= i-1; j++)
{
Max = max(Max, f[j]);
for (int k = j + 1; k < i; k++)
{
// cout << "f[j]=" << f[j] << "price[k]=" << price[k] << "price[i]=" << price[i] << endl;
Max = max(Max, f[j] - price[k] + price[i]);
}
}
f[i]=Max;
// printf("%d ", Max);
}
// printf("\n");
printf("%d", f[n]);
}