#include <cstdio> #include <vector> #include <algorithm> using namespace std; int main() { //本题为基本的股票买卖问题,采用动态规划方法可以解决 int n; scanf("%d", &n); int j; vector<int> ivec(n); for(int i = 0; i < n; ++i) { scanf("%d", &j); ivec[i] = j; } vector<vector<int>> price(n, vector<int>(2)); //二维数字dp,price[i][0]代表第i天不持有股票,利润最大值,prince[i][1]代表当天持有股票利润最大值 price[0][0] = 0; price[0][1] = -ivec[0]; for(int i = 1; i < n; ++i) { price[i][0] = max(price[i - 1][0], price[i - 1][1] + ivec[i]); price[i][1] = max(price[i - 1][1], -ivec[i]); //因为只能买卖一次股票。因此第i天买入可记为-ivec[i] } printf("%d", price[n - 1][0]); return 0; } // 64 位输出请用 printf("%lld")