1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        深入淺出算法題-零錢兌換的動態(tài)規(guī)劃問題

        共 849字,需瀏覽 2分鐘

         ·

        2022-05-23 14:18

        點擊上方摸魚吧算法工程師”卡片,關(guān)注星標
        獲取有趣、好玩的前沿干貨!

        一、 零錢兌換:硬幣的最少個數(shù)

        • 給一個整數(shù)數(shù)組 coins ,表示不同面額的硬幣;以及一個整數(shù) amount ,表示總金額。

        • 計算并返回可以湊成總金額所需的最少硬幣個數(shù) 。如果沒有任何一種硬幣組合能組成總金額,返回-1 。

        • 可認為每種硬幣的數(shù)量是無限的。

        解題關(guān)鍵點

        • 經(jīng)典的動態(tài)規(guī)劃問題。

        • 設(shè)置一個數(shù)組dp,其中每個元素dp[i]記錄的是,當金額為i時,所需要的硬幣個數(shù)。則題目所求為dp[amount]。

        • 考慮基礎(chǔ)簡單的例子。有dp[0] = 0,也就是說,金額為0所需的硬幣個數(shù)是0。

        • 考慮狀態(tài)轉(zhuǎn)移公式。從小到大遍歷金額數(shù),這樣,可以保證:當我們計算金額i所需的最少硬幣個數(shù)dp[i]時,前面更少的金額所需要的最少硬幣個數(shù),比如dp[i-1]、dp[i-2]······等都已求出。

        • 那么,對任意的dp[i],面對某種硬幣的面額(記為coin),如果在湊成金額i時選擇了這枚硬幣,那么在湊成金額(i-coin)時所需要的硬幣個數(shù) + 1即可。也就是dp[i] = dp[i-coin] + 1。

        class?Solution(object):
        ????def?coinChange(self,?coins,?amount):
        ????????"""
        ????????:type?coins:?List[int]
        ????????:type?amount:?int
        ????????:rtype:?int
        ????????"
        ""
        ????????#?初始化為正無窮大
        ????????dp?=?[float('inf')]*(amount+1)
        ????
        ????????#?金額為0,所要湊的硬幣個數(shù)也為0
        ????????dp[0]?=?0
        ????????
        ????????for?coin?in?coins:
        ????????????sum_coin?=?coin
        ????????????
        ????????????while?sum_coin?????????????????dp[sum_coin]?=?min(dp[sum_coin],?dp[sum_coin-coin]+1)
        ????????????????sum_coin?+=?1
        ????????
        ????????#?print(dp)
        ????????return?dp[amount]?if?dp[amount]!=?float('inf')?else?-1

        二、零錢兌換:硬幣的組合總數(shù)

        • 給一個整數(shù)數(shù)組 coins 表示不同面額的硬幣,另給一個整數(shù) amount 表示總金額。

        • 計算并返回可以湊成總金額的硬幣組合數(shù)。如果任何硬幣組合都無法湊出總金額,返回 0 。

        • 假設(shè)每一種面額的硬幣有無限個。

        解題關(guān)鍵點

        • 經(jīng)典的動態(tài)規(guī)劃問題。

        • 設(shè)置一個數(shù)組dp,其中每個元素dp[i]記錄的是,當湊成金額為i時,所有的硬幣組合的總數(shù)。則題目所求為dp[amount]。

        • 考慮基礎(chǔ)簡單的例子。有dp[0] = 1,也就是說,金額為0時,只有1種選擇,就是什么硬幣都不取。

        • 考慮狀態(tài)轉(zhuǎn)移公式。從小到大遍歷金額數(shù),這樣,可以保證:當我們計算金額i的硬幣組合數(shù)dp[i]時,前面更少的金額的組合數(shù)比如dp[i-1]、dp[i-2]······等都已求出。

        • 那么,對任意的dp[i],面對某種硬幣的面額(記為coin),如果在湊成金額i時選擇了這枚硬幣,那么它也包含了湊成金額(i-coin)時的組合個數(shù)。而對不同面值的硬幣coin,都需要累加所有的組合個數(shù)。

        class?Solution(object):
        ????def?change(self,?amount,?coins):
        ????????"""
        ????????:type?amount:?int
        ????????:type?coins:?List[int]
        ????????:rtype:?int
        ????????"
        ""

        ????????dp?=?[0]*(amount+1)
        ????????dp[0]?=?1

        ????????for?coin?in?coins:
        ????????????sum_coin?=?coin
        ????????????
        ????????????while?sum_coin?<=?amount:
        ????????????????dp[sum_coin]?+=?dp[sum_coin-coin]
        ????????????????sum_coin?+=?1
        ????????
        ????????return?dp[amount]



        本文僅作學(xué)術(shù)分享??侵刪
        -------------END-------------
        往期閱讀

        深入淺出算法題(1)-動態(tài)規(guī)劃前n個數(shù)字二進制中1的個數(shù)

        深入淺出算法題(2)-回文子串個數(shù)之馬拉車算法

        (1)GAN改進系列 | 最新ICCV2021生成對抗網(wǎng)絡(luò)GAN論文梳理匯總

        (2)最新ICCV 2021 | 圖像轉(zhuǎn)換生成對抗GAN匯總梳理

        最新 ICCV 2021 | GAN隱私保護(33)醫(yī)學(xué)圖像(34)生成對抗GAN

        最新 ICCV 2021 論文推薦

        【附下載】機器學(xué)習(xí)統(tǒng)計學(xué),476頁pdf

        【附下載】《面向機器學(xué)習(xí)的特征工程》.pdf

        【收藏】機器學(xué)習(xí)核心概念完全解析

        【附ppt與視頻】可解釋機器學(xué)習(xí)進展,附ppt與視頻

        如果覺得有用,就點個“在看”吧?


        瀏覽 19
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            久久久久99精品成人片直播 | 草b网站| 屁屁插亚洲 | 色老板网址 | 免费观看美女用震蛋喷水的视频 | 我让你爽还是他让你爽嗯挺进去 | 三级视频在线观看 | 99r在线免费观看 | 骚逼操操 | 快播黄色下载 |