2022-09-21 22 【我的刷題日記】518零錢兌換2 377組合總和4

思路:本題是學(xué)習(xí)了完全背包問題之后的第一道應(yīng)用題,從題目的意思中我們可以知道,能使用零錢的次數(shù)是無限的,也就是同一個(gè)數(shù)值的錢能被重復(fù)使用多次我們把目標(biāo)金額看成背包的總?cè)萘浚褑蝹€(gè)零錢看成是重量和價(jià)值,那么本題完美符合完全背包的要求。
我們?cè)O(shè)dp數(shù)組,則dp[j]在題中表示組合成總金額j一共有多少中組合方法,組合問題的遞推公式我們一般使用累加的方式 即dp[j] += dp[j-coins[i]],因?yàn)榧僭O(shè)如果包里已經(jīng)有一個(gè)coins[i] 那么 有dp[j-coins[i]]種方法得到dp[j].
在進(jìn)行遍歷的時(shí)候,我們對(duì)于組合問題應(yīng)當(dāng)采取先遍歷物品再遍歷背包,因?yàn)榻M合問題并不在意物品的順序,不管是【1,2,3】還是【3,2,1】都代表同一個(gè)組合,這樣進(jìn)行遍歷不會(huì)出現(xiàn)代表同一個(gè)組合的重復(fù)的集合

class Solution {
    public int change(int amount, int[] coins) {
//        amount表示總金額 也就是背包的容量;
//        coin 表示物品的重量和價(jià)值
//        dp[j]表示組合成總金額j一共有多少中組合方法
        int[] dp = new int[amount+1];
//        初始化 組成0只有一種方法就是每個(gè)都放0個(gè)
        dp[0] = 1;
        for (int i = 0 ; i < coins.length;i++){
//            完全背包問題 可重復(fù)放
            for (int j = coins[i]; j <= amount; j++){
                dp[j] += dp[j - coins[i]];
            }
        }
        return dp[amount];

    }
}

思路:本題從完全背包組合問題變成了完全背包排列問題,我們?cè)诒闅v的時(shí)候應(yīng)該先遍歷背包,再遍歷物品,保證會(huì)出現(xiàn)元素相同順序不同的組合

class Solution {
    public int combinationSum4(int[] nums, int target) {
        int[] dp = new int[target + 1];
        dp[0] = 1;
        for (int j = 0; j <= target; j++){
            for (int i = 0; i < nums.length; i++) {
                if (j - nums[i] >= 0){
                    dp[j] += dp[j - nums[i]];
                }
            }
        }
        return dp[target];


    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 題目描述:給定不同面額的硬幣和一個(gè)總金額。寫出函數(shù)來計(jì)算可以湊成總金額的硬幣組合數(shù)。假設(shè)每一種面額的硬幣有無限個(gè)。...
    墨痕_UCAS閱讀 326評(píng)論 0 1
  • 1、前言 2、思路 本題使用完全背包的思路,那完全背包跟 0-1 背包有何區(qū)別呢? 0-1 限制了物品的數(shù)量,物品...
    放開那個(gè)BUG閱讀 225評(píng)論 0 0
  • 完全背包 完全背包和01背包的區(qū)別:完全背包:物品可以無限使用,遍歷順序沒有強(qiáng)制規(guī)定,可以先物品后背包,反之亦可以...
    zsdy閱讀 683評(píng)論 0 0
  • 題目 給你一個(gè)整數(shù)數(shù)組 coins 表示不同面額的硬幣,另給一個(gè)整數(shù) amount 表示總金額。請(qǐng)你計(jì)算并返回可以...
    草莓桃子酪酪閱讀 563評(píng)論 0 0
  • 零錢兌換 II (中等題)[https://leetcode-cn.com/problems/coin-chang...
    城去歌的干題號(hào)閱讀 867評(píng)論 2 1

友情鏈接更多精彩內(nèi)容