动态规划做,在做之前,序列型问题,一般是双数组。
- 一定以给出的数组开始分条件讨论,这样讨论完了其实代码就写出来乐。、
- 计算顺序,最后结果是哪一个。
- 写df一般,对于dfi是指的是这一天,数组一般【i-1】,写的时候复原就好,你就知道是这一天的数组中的数就行
- 并且买卖股票是同一天两个状态一直进行的。
class Solution { public: /** * * @param prices int整型vector * @return int整型 */ int maxProfit(vector<int>& prices) { // write code here int res = 0; if(!prices.size()){ return res; } int dp[prices.size()][2]; dp[0][0] = 0; dp[0][1] = -prices[0]; //第二天开始遍历 for(int i = 1; i<prices.size();i++){ dp[i][0] = max(dp[i-1][0],dp[i-1][1]+prices[i]); dp[i][1] = max(dp[i-1][1],-prices[i]); } return dp[prices.size()-1][0]; } };