国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【學會動態(tài)規(guī)劃】最佳買賣股票時機含冷凍期(15)

這篇具有很好參考價值的文章主要介紹了【學會動態(tài)規(guī)劃】最佳買賣股票時機含冷凍期(15)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

動態(tài)規(guī)劃怎么學?

1. 題目解析

2. 算法原理

1. 狀態(tài)表示

2. 狀態(tài)轉(zhuǎn)移方程

3. 初始化

4. 填表順序

5. 返回值

3. 代碼編寫

寫在最后:


動態(tài)規(guī)劃怎么學?

學習一個算法沒有捷徑,更何況是學習動態(tài)規(guī)劃,

跟我一起刷動態(tài)規(guī)劃算法題,一起學會動態(tài)規(guī)劃!

1. 題目解析

題目鏈接:309. 最佳買賣股票時機含冷凍期 - 力扣(Leetcode)

【學會動態(tài)規(guī)劃】最佳買賣股票時機含冷凍期(15),學會動態(tài)規(guī)劃,動態(tài)規(guī)劃,算法

這道題很好理解,其實就是買股票的時候多了一個冷凍期。?

2. 算法原理

1. 狀態(tài)表示

因為他有三種情況,所以我們也有三種狀態(tài)表示:

dp[ i ][ 0 ] 表示第 i 天是 “買入” 狀態(tài),此時的最大利潤。

dp[ i ][ 1?] 表示第 i 天是 “可賣出” 狀態(tài),此時的最大利潤。

dp[ i ][ 2?] 表示第 i 天是 “冷凍” 狀態(tài),此時的最大利潤。

2. 狀態(tài)轉(zhuǎn)移方程

我們一個一個分析狀態(tài)表示:

首先是買入狀態(tài),怎么樣讓第 i 天進入買入狀態(tài)?

如果 i - 1 天結(jié)束是買入狀態(tài)(買過股票)那就已經(jīng)是買入狀態(tài),

如果 i - 1 天結(jié)束是可交易狀態(tài)(可以賣股票但沒買)那只要這天買入,就可以進入買入狀態(tài),

如果 i - 1 天結(jié)束是冷凍狀態(tài)(就是賣出的后一天)這樣就不能進入買入狀態(tài)。

然后是冷凍狀態(tài),怎么樣讓第 i 天進入冷凍狀態(tài)?

如果 i - 1 天結(jié)束是買入狀態(tài),那只要這天賣出,就能進入冷凍狀態(tài),

如果 i - 1 天結(jié)束是可交易狀態(tài),那只要這天賣了,也能進入冷凍狀態(tài),

如果 i - 1 天結(jié)束是冷凍狀態(tài),那第 i 天結(jié)束不可能是冷凍狀態(tài),因為沒東西可以賣了。

然后是可交易狀態(tài),怎么樣讓第 i 天進入可交易狀態(tài)?

如果 i - 1 天結(jié)束是買入狀態(tài),那就不是可交易狀態(tài),而是買入狀態(tài)。

如果 i - 1 天結(jié)束是可交易狀態(tài),那也只需要啥都不干就是可交易狀態(tài),

如果 i - 1 天結(jié)束是冷凍狀態(tài),那也只需要啥都不干就是可交易狀態(tài)。

所以我們根據(jù)上面的分析來寫狀態(tài)轉(zhuǎn)移方程:

dp[ i ][ 0 ] = max( dp[ i - 1 ][ 0 ],dp[ i - 1 ][ 1 ] - p[ i ]?)

dp[ i ][ 1 ] = max(?dp[ i - 1 ][ 1 ],dp[ i - 1 ][ 2?]?)

dp[ i ][ 2?] =? dp[ i - 1 ][ 0 ] + p[ i ]

3. 初始化

我們只需要把 dp[ 0 ][ 0 ] 初始化成 -p[ 0 ] 即可,因為買入了所以最大利潤就是一個負值。

4. 填表順序

從左往右,依次填寫三個表即可。

5. 返回值

其實就是:max( dp[ n - 1?][ 1 ],dp[ n - 1 ][ 2 ]?)

第一種買入的情況不考慮,因為都買入了,肯定不會是最大利潤。

3. 代碼編寫

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

寫在最后:

以上就是本篇文章的內(nèi)容了,感謝你的閱讀。

如果感到有所收獲的話可以給博主點一個哦。

如果文章內(nèi)容有遺漏或者錯誤的地方歡迎私信博主或者在評論區(qū)指出~文章來源地址http://www.zghlxwxcb.cn/news/detail-624147.html

到了這里,關(guān)于【學會動態(tài)規(guī)劃】最佳買賣股票時機含冷凍期(15)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【學會動態(tài)規(guī)劃】買賣股票的最佳時機 III(17)

    【學會動態(tài)規(guī)劃】買賣股票的最佳時機 III(17)

    目錄 動態(tài)規(guī)劃怎么學? 1. 題目解析 2. 算法原理 1. 狀態(tài)表示 2. 狀態(tài)轉(zhuǎn)移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后: 學習一個算法沒有捷徑,更何況是學習動態(tài)規(guī)劃, 跟我一起刷動態(tài)規(guī)劃算法題,一起學會動態(tài)規(guī)劃! 題目鏈接:123. 買賣股票的最佳時機 II

    2024年02月13日
    瀏覽(24)
  • 【學會動態(tài)規(guī)劃】買賣股票的最佳時機含手續(xù)費(16)

    【學會動態(tài)規(guī)劃】買賣股票的最佳時機含手續(xù)費(16)

    目錄 動態(tài)規(guī)劃怎么學? 1. 題目解析 2. 算法原理 1. 狀態(tài)表示 2. 狀態(tài)轉(zhuǎn)移方程 3. 初始化 4. 填表順序 5. 返回值 3. 代碼編寫 寫在最后: 學習一個算法沒有捷徑,更何況是學習動態(tài)規(guī)劃, 跟我一起刷動態(tài)規(guī)劃算法題,一起學會動態(tài)規(guī)劃! 這道題也不難理解,主要有兩個點需要注

    2024年02月14日
    瀏覽(32)
  • 309.最佳買賣股票時機含冷凍期 714.買賣股票的最佳時機含手續(xù)費

    力扣題目鏈接(opens new window) 給定一個整數(shù)數(shù)組,其中第 i 個元素代表了第 i 天的股票價格 。 設(shè)計一個算法計算出最大利潤。在滿足以下約束條件下,你可以盡可能地完成更多的交易(多次買賣一支股票): 你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)

    2024年01月16日
    瀏覽(28)
  • 【第51天| 309.最佳買賣股票時機含冷凍期 ● 714.買賣股票的最佳時機含手續(xù)費 】

    三個狀態(tài): 1. 當前持有股票 狀態(tài)1 2. 當前不持有股票,且不是今天賣出的股票 狀態(tài)2 3. 當前不持有股票, 且股票是今天賣出的 狀態(tài)3 題目要求前一天賣出了股票今天就不能買。所以今天持有股票 狀態(tài)1 一定是昨天的 狀態(tài)2 在今天買了股票,或者就是保持了昨天的 狀態(tài)1 。 狀

    2024年02月08日
    瀏覽(22)
  • 算法[動態(tài)規(guī)劃]---買賣股票最佳時機

    算法[動態(tài)規(guī)劃]---買賣股票最佳時機

    1、題目: 給你一個整數(shù)數(shù)組 prices,其中 prices[i] 表示某支股票第 i 天的價格。 在每一天,你可以決定是否購買和/或出售股票。你在任何時候最多只能持一股股票。你也可以先購買,然后在同一天出售。 返回你能獲得的最大利潤 。 2、 分析特點: 題目要求:在任何時候最多

    2024年02月09日
    瀏覽(22)
  • 力扣 -- 309. 最佳買賣股票時機含冷凍期

    力扣 -- 309. 最佳買賣股票時機含冷凍期

    ?題目鏈接:309. 最佳買賣股票時機含冷凍期 - 力扣(LeetCode) 下面是用動態(tài)規(guī)劃的思想解決這道題的過程,相信各位小伙伴都能看懂并且掌握這道經(jīng)典的動規(guī)題目滴。 ? 參考代碼: ?以上就是用動態(tài)規(guī)劃的思想分析這道題目的整個過程啦,你學會了嗎?如果以上題解對你有

    2024年02月13日
    瀏覽(23)
  • 【LeetCode】買賣股票的最佳時機含冷凍期

    【LeetCode】買賣股票的最佳時機含冷凍期

    鏈接: 買賣股票的最佳時機含冷凍期 題目描述 算法分析 程序設(shè)計

    2024年02月13日
    瀏覽(17)
  • 力扣 309. 買賣股票的最佳時機含冷凍期

    力扣 309. 買賣股票的最佳時機含冷凍期

    題目來源:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/ C++題解:動態(tài)規(guī)劃 狀態(tài)1:表示持有股票。更新為之前持有股票(dp[i-1][0])或者不持有股票且不處于冷凍期后買入(dp[i-1][2]-prices[i])。 狀態(tài)2:表示不持有股票且處于冷凍期,即賣出。更新為持有

    2024年02月22日
    瀏覽(26)
  • 動態(tài)規(guī)劃——買賣股票的最佳時機系列題

    動態(tài)規(guī)劃——買賣股票的最佳時機系列題

    買賣股票有一系列題目 以下是我找出它們之間的區(qū)別: 第一題,只能買一次,從最低價入手,最高價賣出 第二題,可以買無數(shù)次,但買了之后,必須賣出之后,再來重新買入,再賣出。 第三題,只能買兩次,但買了之后,必須賣出之后,再來重新買入,再賣出。 第四題,

    2024年01月17日
    瀏覽(19)
  • 【LeetCode】309. 買賣股票的最佳時機含冷凍期

    給定一個整數(shù)數(shù)組 prices ,其中第? ? prices[i] ?表示第? i ?天的股票價格 。? 設(shè)計一個算法計算出最大利潤。在滿足以下約束條件下,你可以盡可能地完成更多的交易(多次買賣一支股票): 賣出股票后,你無法在第二天買入股票 (即冷凍期為 1 天)。 注意: 你不能同時參與

    2024年02月10日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包