题目描述:

思路:
读题可知,这是一道线性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]);
}
 










