动态规划做,在做之前,序列型问题,一般是双数组。
- 一定以给出的数组开始分条件讨论,这样讨论完了其实代码就写出来乐。、
- 计算顺序,最后结果是哪一个。
- 写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];
}
};
京公网安备 11010502036488号