本文主要是介绍算法提高之股票买卖 V,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
算法提高之股票买卖 V
-
核心思想:状态机
- 一共有三种情况 : 空仓,持仓,冻结期
- f[i,j]表示第i天的状态j
- 状态计算: 如下
-
#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 100010;int f[N][3];int w[N];int n;int main(){cin>>n;for(int i=0;i<n;i++) cin>>w[i];f[0][0] = 0;f[0][1] = -w[0];for(int i=1;i<n;i++){//当前空仓 = 前一次空仓/前一次冻结期f[i][0] = max(f[i-1][0] , f[i-1][2]);//当前持仓 = 前一次持仓/前一次空仓买入f[i][1] = max(f[i-1][1] , f[i-1][0] - w[i]);//当前冻结期 = 前一次持仓卖出f[i][2] = f[i-1][1] + w[i];}cout<<max(f[n-1][0],f[n-1][2])<<endl;return 0;}
这篇关于算法提高之股票买卖 V的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!