代码随想录算法训练营day49|| 第八章 动态规划

123.买卖股票的最佳时机III

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。题目

class Solution {
public:
    int maxProfit(vector& prices) {
        if(prices.size()==0){
            return 0;
        }
        vector> dp(prices.size(),vector(5,0));
        dp[0][1]=-prices[0];
        dp[0][3]=-prices[0];
        for(int i=1;i

188.买卖股票的最佳时机IV

给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。题目

class Solution {
public:
    int maxProfit(int k, vector& prices) {
        if(prices.size()==0){
            return 0;
        }
        vector> dp(prices.size(),vector(2*k+1,0));
        for(int j=1;j<2*k+1;j+=2){
            dp[0][j]=-prices[0];
        }
        for(int i=1;i

你可能感兴趣的:(算法,动态规划,leetcode)