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

【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù)

這篇具有很好參考價值的文章主要介紹了【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

今天又是補打卡的一天,開沖?。?!

今日任務(wù):

  • 70.爬樓梯(進階)
  • 322.零錢兌換
  • 279.完全平方數(shù)

題目一:爬樓梯(進階)

這道題之前做過一次,但是可以采用完全背包的問題來分析一遍。

卡瑪網(wǎng)題目:【57.爬樓梯】

【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù),2-數(shù)據(jù)結(jié)構(gòu)與算法,動態(tài)規(guī)劃,算法
這個題目其實是更難了一點,因為前面的題目都是每次要不爬1階樓梯,要不爬2階樓梯,現(xiàn)在相當于是任選,而且還是可以重復(fù)利用的,因此此問題可以轉(zhuǎn)化為排列方式的完全背包問題。
按照遞歸五部曲:
(1)定義dp數(shù)組及其含義:
dp[j]表示爬到j(luò)階樓梯,有dp[j]種方法。
(2)確定遞推公式:
因為這個是方法類的,所以遞推公式通常為:dp[j] = dp[j-nums[i]],此題種的nums[i]對應(yīng)的就是1、2、3、4這種,因此可以轉(zhuǎn)換為dp[j] = dp[j-i];
(3)dp數(shù)組初始化:
dp[0] = 1;如果初始化dp[0] = 0,那后面的全部都是0;
(4)確定遍歷順序:
因為這個是排列的完全背包問題;
完全背包問題相對于01背包問題,其實是第二層變成了從左到右遍歷,然后因為又是排列的問題,所以是先背包后物品。
(5)打印dp數(shù)組:
一般用來判斷和自己想的是否一致

易錯點:在遞推公式前面需要判斷一下才能放,這個是完全背包排列問題中非常重要的東西


#include <iostream>
#include <vector>
using namespace std;

int main(){
    
    int m = 0, n = 0;
    while(cin >> n >> m){
        vector<int> dp(n+1);
        dp[0] = 1;
        for(int i = 1; i<=n; i++){
            for(int j = 0; j<=m; j++){
                if(i>=j) dp[i] += dp[i-j];
            }
        }
        cout << dp[n];
    }
    return 0;
}

題目二:零錢兌換

Leetcode題目:【322.零錢兌換】

【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù),2-數(shù)據(jù)結(jié)構(gòu)與算法,動態(tài)規(guī)劃,算法

從題目中大致可以看出來是完全背包類的題目,按照遞歸五部曲:
1、定義dp數(shù)組的含義:dp[j]表示裝滿j,最少的硬幣數(shù)目為dp[j];
2、確定遞推公式:
dp[j] = min(dp[j-coins[i]] + 1, dp[j]);
3、初始化:
dp[0] = 0;
因為取得都是最小,故為了不影響式子的值,所以需要初始化最大值;
4、遍歷順序:
按照完全背包的問題,可以是組合也可以是排列問題;
5、打印dp數(shù)組

此處需要注意在遞推公式的判斷條件,因為有可能dp[i]某些并不會初始化。


class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int> dp(amount + 1, INT_MAX);
        dp[0] = 0;
        for(int i = 0; i<coins.size(); i++){
            for(int j = coins[i]; j<=amount; j++){
                //dp[j] = min(dp[j], dp[j-coins[i]] + 1);
                if (dp[j - coins[i]] != INT_MAX){
                    dp[j] = min(dp[j], dp[j-coins[i]] + 1);
                }
            }
        }

        if (dp[amount] == INT_MAX) return -1;
        for(int i = 0; i<=amount; i++){
            cout << dp[i] << " ";
        }

        return dp[amount];
    }
};

題目三:279.完全平方數(shù)

Leetcode題目:【279.完全平方數(shù)】

【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù),2-數(shù)據(jù)結(jié)構(gòu)與算法,動態(tài)規(guī)劃,算法
這個題跟上面的題目基本一樣,只不過此題需要我們自己去創(chuàng)造物品,物品就是i*i,因為完全平方數(shù)中存在1,所以不可能存在不能拼湊的情況。

按照遞歸五部曲:
(1)確定dp數(shù)組含義:dp[j]表示裝滿數(shù)量為j的背包,需要的最少完全平方數(shù)的個數(shù);
(2)確定遞推公式:
dp[j] = dp[j-nums[i]] + 1 變?yōu)閐p[j] = dp[j-ii] + 1,因為是求最小,所以
dp[j] = min(dp[j], dp[j-i
i] + 1);
(3)初始化:dp[0] = 0,同時其他設(shè)置為最大值INT_MAX;
(4)確定遍歷順序:
因為此題是完全背包問題,所以都是正序,因為是組合問題,所以可以先物品再背包;
(5)打印dp數(shù)組;文章來源地址http://www.zghlxwxcb.cn/news/detail-843300.html

class Solution {
public:
    int numSquares(int n) {
        // 題目就是自己去構(gòu)造物品
        vector<int> dp(n+1, INT_MAX);
        dp[0] = 0;
        for(int i = 1; i*i <= n; i++){
            for(int j = i*i; j<=n; j++){
                if(dp[j-i*i] != INT_MAX){
                    dp[j] = min(dp[j], dp[j-i*i] + 1);
                }
            }
        }
        return dp[n];
    }
};

到了這里,關(guān)于【Day45】代碼隨想錄之動態(tài)規(guī)劃part7—爬樓梯(進階)、零錢兌換、完全平方數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Day39 代碼隨想錄(1刷) 動態(tài)規(guī)劃 0-1背包

    題目描述 小明是一位科學(xué)家,他需要參加一場重要的國際科學(xué)大會,以展示自己的最新研究成果。他需要帶一些研究材料,但是他的行李箱空間有限。這些研究材料包括實驗設(shè)備、文獻資料和實驗樣本等等,它們各自占據(jù)不同的空間,并且具有不同的價值。? 小明的行李空間

    2024年04月23日
    瀏覽(32)
  • 【Day52】代碼隨想錄之動態(tài)規(guī)劃_打家劫舍

    動態(tài)規(guī)劃理論基礎(chǔ) 動規(guī)五部曲: 確定dp數(shù)組 下標及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印dp日志和

    2024年02月22日
    瀏覽(28)
  • 【Day42】代碼隨想錄之動態(tài)規(guī)劃0-1背包_416. 分割等和子集

    【Day42】代碼隨想錄之動態(tài)規(guī)劃0-1背包_416. 分割等和子集

    動態(tài)規(guī)劃理論基礎(chǔ) 動規(guī)五部曲: 確定dp數(shù)組 下標及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 推導(dǎo)dp數(shù)組。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印

    2024年02月20日
    瀏覽(97)
  • 我在代碼隨想錄|寫代碼Day33 | 動態(tài)規(guī)劃| 路徑問題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    我在代碼隨想錄|寫代碼Day33 | 動態(tài)規(guī)劃| 路徑問題| 62.不同路徑,63. 不同路徑 II,343. 整數(shù)拆分

    ??博客介紹`: 27dCnc ??系列專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 算法入門 C++項目 ?? 當前專欄: 算法入門 專題 : 數(shù)據(jù)結(jié)構(gòu)幫助小白快速入門算法 ???????????????????????? ☆*: .?. o(≧▽≦)o .?.:*☆ ??感謝大家點贊??收藏?評論?? 今日學(xué)習(xí)打卡 代碼隨想錄 - 動態(tài)規(guī)劃

    2024年03月11日
    瀏覽(96)
  • 【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

    【Day53】代碼隨想錄之動態(tài)規(guī)劃part10——買賣股票的最佳時機、買賣股票的最佳時機II

    昨天已經(jīng)把打家劫舍的問題解決了,最后一個題目涉及到樹形dp比較難(等到二刷的時候再重點看下),今天的任務(wù)是解決股票問題。 今日任務(wù): 121.買賣股票的最佳時機 122.買賣股票的最佳時機II Leetcode題目:【121.買賣股票的最佳時機】 因為此題中買賣股票只能買賣一次。

    2024年03月15日
    瀏覽(33)
  • 代碼隨想錄 Day35 動態(tài)規(guī)劃04 01背包問題和完全背包問題 LeetCode T416 分割等和子集

    代碼隨想錄 Day35 動態(tài)規(guī)劃04 01背包問題和完全背包問題 LeetCode T416 分割等和子集

    說到背包問題大家都會想到使用動規(guī)的方式來求解,那么為什么用動規(guī)呢, dp數(shù)組代表什么呢 ? 初始化是什么 , 遍歷方式又是什么 ,這篇文章筆者將詳細講解背包問題的經(jīng)典例題0-1背包問題和完全背包問題的解題方式,希望能幫助到大家 有人一提到背包問題就只會使用動態(tài)規(guī)劃來

    2024年02月06日
    瀏覽(124)
  • 【Day43】代碼隨想錄之動態(tài)規(guī)劃0-1背包_1049. 最后一塊石頭的重量 II_494. 目標和_ 474.一和零

    動態(tài)規(guī)劃理論基礎(chǔ) 動規(guī)五部曲: 確定dp數(shù)組 下標及dp[i] 的含義。 遞推公式:比如斐波那契數(shù)列 dp[i] = dp[i-1] + dp[i-2]。 初始化dp數(shù)組。 確定遍歷順序:從前到后or其他。 打印。 出現(xiàn)結(jié)果不正確: 打印dp日志和自己想的一樣:遞推公式、初始化或者遍歷順序出錯。 打印dp日志和

    2024年02月22日
    瀏覽(24)
  • 代碼隨想錄Day32 動態(tài)規(guī)劃01 LeetCodeT509 斐波那契數(shù)列 T70 爬樓梯 T746 爬樓梯的最小消耗

    代碼隨想錄Day32 動態(tài)規(guī)劃01 LeetCodeT509 斐波那契數(shù)列 T70 爬樓梯 T746 爬樓梯的最小消耗

    動態(tài)規(guī)劃首先可以解決的問題有背包問題,打家劫舍問題,股票問題,子序列問題等,主要是將一個大的問題切分成多個重疊的子問題,所以動態(tài)規(guī)劃一定是上一個狀態(tài)遞推過來的,有一個重要的 狀態(tài)轉(zhuǎn)移方程, 但是這也并不是解題的全部,我們將動態(tài)規(guī)劃的題目基本分為五步來完成

    2024年02月06日
    瀏覽(88)
  • 代碼隨想錄Day36 動態(tài)規(guī)劃05 LeetCode T1049最后一塊石頭的重量II T494 目標和 T474 一和零

    代碼隨想錄Day36 動態(tài)規(guī)劃05 LeetCode T1049最后一塊石頭的重量II T494 目標和 T474 一和零

    理論基礎(chǔ)? :?代碼隨想錄Day34 LeetCode T343整數(shù)拆分 T96 不同的二叉搜索樹-CSDN博客 1.明白dp數(shù)組的含義 2.明白遞推公式的含義 3.初始化dp數(shù)組 4.注意dp數(shù)組的遍歷順序 5.打印dp數(shù)組排錯 題目鏈接:1049. 最后一塊石頭的重量 II - 力扣(LeetCode) 這題我們?nèi)匀徊捎脛右?guī)五部曲來寫,這題和

    2024年02月06日
    瀏覽(19)
  • 代碼隨想錄 動態(tài)規(guī)劃-基礎(chǔ)題目

    代碼隨想錄 動態(tài)規(guī)劃-基礎(chǔ)題目

    目錄 509.斐波那契數(shù)? 70.爬樓梯 746.使用最小花費爬樓梯 62.不同路徑 63.不同路徑|| 343.整數(shù)拆分 96.不同的二叉樹 509. 斐波那契數(shù) 簡單 斐波那契數(shù) ?(通常用? F(n) ?表示)形成的序列稱為? 斐波那契數(shù)列 ?。該數(shù)列由? 0 ?和? 1 ?開始,后面的每一項數(shù)字都是前面兩項數(shù)字的和

    2024年03月18日
    瀏覽(36)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包