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

【動(dòng)態(tài)規(guī)劃】322. 零錢(qián)兌換

這篇具有很好參考價(jià)值的文章主要介紹了【動(dòng)態(tài)規(guī)劃】322. 零錢(qián)兌換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

322. 零錢(qián)兌換

動(dòng)態(tài)規(guī)劃-自頂向下

  • 定義 要湊出金額n 至少要dp(coins,n)個(gè)硬幣
  • 確定base case 目標(biāo)金額為0 返回0
  • 確定 狀態(tài) 也就是原問(wèn)題和子問(wèn)題中的變量,你每次抽取一個(gè)硬幣,都會(huì)導(dǎo)致目標(biāo)金額減少,所以狀態(tài)就是目標(biāo)金額
  • 確定選擇,也就是導(dǎo)致?tīng)顟B(tài)產(chǎn)生變化的行為,每次選一個(gè)硬幣都會(huì)導(dǎo)致目標(biāo)金額的減少
  • 明確dp數(shù)組的定義,狀態(tài)數(shù)組的每一個(gè)值都是代表目標(biāo)金額

class Solution {
    int[] memo;
    public int coinChange(int[] coins, int amount) {
        // 創(chuàng)建子問(wèn)題狀態(tài)數(shù)組
        memo = new int[amount + 1];

        Arrays.fill(memo,-666);// 初始化一個(gè)特殊值 表示還沒(méi)有計(jì)算

        // 題目要求的最終結(jié)果就是dp
        return dp(coins,amount);
    }

    // 定義 要湊出金額n 至少要dp(coins,n)個(gè)硬幣
    // dp狀態(tài)是  變化的 也就是原問(wèn)題和子問(wèn)題的變量  由于硬幣數(shù)量無(wú)限,仔細(xì)想一下  你每次抽取一個(gè)硬幣 變化的是什么 目標(biāo)總金額  抽取硬幣的次數(shù)就是狀態(tài)數(shù)組的長(zhǎng)度  每次抽取 狀態(tài)變量都會(huì)變化
    int dp(int[] coins,int amount){
        // base case
        if(amount == 0){
            return 0;
        }

        if(amount < 0){
            return -1;
        }

        if(memo[amount] != -666){
            return memo[amount];// 查找子問(wèn)題的解
        }

        int res = Integer.MAX_VALUE;
        for(int coin: coins){
            // 拿走一個(gè)硬幣 計(jì)算子問(wèn)題的解
            int sub  = dp(coins,amount - coin);

            // 子問(wèn)題無(wú)解 就跳過(guò)
            if(sub == -1){
                continue;
            }

            // 更新解  因?yàn)樾枰钌倌米哂矌诺拇螖?shù)
            res = Math.min(res,sub + 1);
        }


        // 將計(jì)算結(jié)果存入 子問(wèn)題數(shù)組
        memo[amount] = (res == Integer.MAX_VALUE) ? -1:res;
        return res == Integer.MAX_VALUE ? -1:res;
    }
}

動(dòng)態(tài)規(guī)劃-自底向上

  • 狀態(tài)數(shù)組的每一個(gè)狀態(tài)都是代表目標(biāo)金額
  • 外層for循環(huán)遍歷所有狀態(tài)的所有取值
  • 內(nèi)層for循環(huán)遍歷所有狀態(tài)的所有取值
class Solution {
    public int coinChange(int[] coins, int amount) {
        // int[] dp = new int[amount + 1];

        // 數(shù)組大小是  amount + 1
        int[] dp = new int[amount + 1];
        Arrays.fill(dp,amount + 1);

        // base case
        dp[0] = 0;

        // 外層for循環(huán)在遍歷所有狀態(tài)的所有取值  每一個(gè)狀態(tài)都是目標(biāo)金額
        for(int i = 0; i < dp.length; i++){
            // 內(nèi)層for循環(huán)遍歷所有狀態(tài)的所憂取值
            for(int coin:coins){
                // 子問(wèn)題誤解 直接跳過(guò)
                if(i - coin < 0){
                    continue;
                }

                dp[i] = Math.min(dp[i], dp[i - coin] + 1);
            }
        }

        return (dp[amount] == amount + 1) ? -1 : dp[amount];
    }
}

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-691594.html

到了這里,關(guān)于【動(dòng)態(tài)規(guī)劃】322. 零錢(qián)兌換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • leetcode322:零錢(qián)兌換

    leetcode322:零錢(qián)兌換 題目: 給你一個(gè)整數(shù)數(shù)組 coins ,表示不同面額的硬幣;以及一個(gè)整數(shù) amount ,表示總金額。 計(jì)算并返回可以湊成總金額所需的 最少的硬幣個(gè)數(shù) 。如果沒(méi)有任何一種硬幣組合能組成總金額,返回 -1 。 你可以認(rèn)為每種硬幣的數(shù)量是無(wú)限的。 思路:動(dòng)態(tài)規(guī)劃

    2024年02月12日
    瀏覽(24)
  • leetcode動(dòng)態(tài)規(guī)劃(零錢(qián)兌換II、組合總和 Ⅳ)

    leetcode動(dòng)態(tài)規(guī)劃(零錢(qián)兌換II、組合總和 Ⅳ)

    給定不同面額的硬幣和一個(gè)總金額。寫(xiě)出函數(shù)來(lái)計(jì)算可以湊成總金額的硬幣組合數(shù)。假設(shè)每一種面額的硬幣有無(wú)限個(gè)。 示例 1: 輸入: amount = 5, coins = [1, 2, 5] 輸出: 4 解釋: 有四種方式可以湊成總金額: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 示例 2: 輸入: amount = 3, coins = [2] 輸出: 0 解釋: 只用面

    2024年02月01日
    瀏覽(71)
  • leetcode 動(dòng)態(tài)規(guī)劃(爬樓梯、零錢(qián)兌換、完全平方數(shù))

    leetcode 動(dòng)態(tài)規(guī)劃(爬樓梯、零錢(qián)兌換、完全平方數(shù))

    卡碼網(wǎng):57. 爬樓梯(opens new window) 假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。 每次你可以爬至多m (1 = m n)個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個(gè)正整數(shù)。 輸入描述:輸入共一行,包含兩個(gè)正整數(shù),分別表示n, m 輸出描述:輸出一個(gè)整數(shù),表

    2024年01月17日
    瀏覽(27)
  • LeetCode518. 零錢(qián)兌換 II 以及 動(dòng)態(tài)規(guī)劃相關(guān)的排列組合問(wèn)題

    LeetCode518. 零錢(qián)兌換 II 以及 動(dòng)態(tài)規(guī)劃相關(guān)的排列組合問(wèn)題

    一、題目 給你一個(gè)整數(shù)數(shù)組 coins 表示不同面額的硬幣,另給一個(gè)整數(shù) amount 表示總金額。 請(qǐng)你計(jì)算并返回可以湊成總金額的硬幣組合數(shù)。如果任何硬幣組合都無(wú)法湊出總金額,返回 0 。 假設(shè)每一種面額的硬幣有無(wú)限個(gè)。 題目數(shù)據(jù)保證結(jié)果符合 32 位帶符號(hào)整數(shù)。 示例 1: 示

    2024年02月09日
    瀏覽(29)
  • 【LeetCode動(dòng)態(tài)規(guī)劃#08】完全背包問(wèn)題實(shí)戰(zhàn)與分析(零錢(qián)兌換II)

    力扣題目鏈接(opens new window) 給定不同面額的硬幣和一個(gè)總金額。寫(xiě)出函數(shù)來(lái)計(jì)算可以湊成總金額的硬幣組合數(shù)。假設(shè)每一種面額的硬幣有無(wú)限個(gè)。 示例 1: 輸入: amount = 5, coins = [1, 2, 5] 輸出: 4 解釋: 有四種方式可以湊成總金額: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 示例 2: 輸入: amount = 3

    2023年04月19日
    瀏覽(47)
  • 算法訓(xùn)練Day45:70. 爬樓梯 (進(jìn)階) 322. 零錢(qián)兌換 279.完全平方數(shù)

    Category Difficulty Likes Dislikes ContestSlug ProblemIndex Score algorithms Easy (54.04%) 2993 0 - - 0 Tags 記憶 ?|? 數(shù)學(xué) ?|? 動(dòng)態(tài)規(guī)劃 Companies 假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。 每次你可以爬 1 或 2 個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢? 示例 1: 示例 2: 提示: 1 = n = 45

    2024年02月01日
    瀏覽(28)
  • 算法訓(xùn)練第四十五天|70. 爬樓梯 (進(jìn)階)、322. 零錢(qián)兌換、279.完全平方數(shù)

    算法訓(xùn)練第四十五天|70. 爬樓梯 (進(jìn)階)、322. 零錢(qián)兌換、279.完全平方數(shù)

    題目鏈接:70. 爬樓梯 (進(jìn)階) 參考:https://programmercarl.com/0070.%E7%88%AC%E6%A5%BC%E6%A2%AF%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E7%89%88%E6%9C%AC.html 假設(shè)你正在爬樓梯。需要 n 階你才能到達(dá)樓頂。 每次你可以爬 1 或 2 個(gè)臺(tái)階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個(gè)正整數(shù)

    2023年04月26日
    瀏覽(26)
  • 【LeetCode動(dòng)態(tài)規(guī)劃#08】完全背包問(wèn)題實(shí)戰(zhàn)與分析(零錢(qián)兌換II--求組合、組合總和IV--求排列)

    力扣題目鏈接(opens new window) 給定不同面額的硬幣和一個(gè)總金額。寫(xiě)出函數(shù)來(lái)計(jì)算可以湊成總金額的硬幣組合數(shù)。假設(shè)每一種面額的硬幣有無(wú)限個(gè)。 示例 1: 輸入: amount = 5, coins = [1, 2, 5] 輸出: 4 解釋: 有四種方式可以湊成總金額: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 示例 2: 輸入: amount = 3

    2023年04月19日
    瀏覽(29)
  • 算法題打卡day45-背包問(wèn)題 | 70. 爬樓梯 (進(jìn)階)、322. 零錢(qián)兌換、279.完全平方數(shù)

    70. 爬樓梯 - 力扣(LeetCode) 狀態(tài):查看思路后AC。 除了常規(guī)的可以爬一或二級(jí)臺(tái)階,當(dāng)題目稍微修改一下,變成可以爬m(xù)級(jí)臺(tái)階,之前的DP思路就有局限(dp[i] = dp[i-1] + dp[i-2),為了通殺這類問(wèn)題,可以將題目轉(zhuǎn)換為完全背包問(wèn)題,可以爬的樓梯級(jí)數(shù)就是背包中的物品,樓梯總

    2024年02月11日
    瀏覽(30)
  • 算法 DAY44 動(dòng)態(tài)規(guī)劃6 完全背包 518. 零錢(qián)兌換 II 377. 組合總和 Ⅳ

    算法 DAY44 動(dòng)態(tài)規(guī)劃6 完全背包 518. 零錢(qián)兌換 II 377. 組合總和 Ⅳ

    有N件物品和一個(gè)最多能背重量為W的背包。第i件物品的重量是weight[i],得到的價(jià)值是value[i] 。每件物品都有無(wú)限個(gè)(也就是可以放入背包多次),求解將哪些物品裝入背包里物品價(jià)值總和最大。 完全背包和01背包問(wèn)題唯一不同的地方就是,每種物品有無(wú)限件。 動(dòng)規(guī)五步曲來(lái)分

    2024年02月01日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包