C++ 代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int dp[N][3];
//0:没有股票的第一天(冷冻期), 1:有股票, 2:没有股票的 第>= 2天
int main(){
memset(dp, 0xcf, sizeof dp);
int n;
cin >> n;
dp[0][1] = -0x3f3f3f, dp[0][0] = -0x3f3f3f, dp[0][2] = 0;
for(int i = 1;i <= n;++i){
int x;cin >> x;
dp[i][0] = dp[i-1][1] + x;
dp[i][1] = max(dp[i-1][1], dp[i-1][2] - x);
dp[i][2] = max(dp[i-1][2], dp[i-1][0]);
}
cout << max(dp[n][0], dp[n][2]) << endl;
return 0;
}