套用解題模板 對揹包問題的三種類分類

2022-06-30 01:06:09 字數 3318 閱讀 3292

目錄2.true、false問題公式

3.最大最小問題公式

cs-note關於動態規劃的文章

518. 零錢兌換 ii (完全揹包+順序無關)

物品的數量是無限的

明確問題的性質

組合問題:dp[i] += dp[i-num]完全揹包 且 順序無關:nums在外target在內

494. 目標和(0-1揹包+順序無關)

明確問題的性質

組合問題:dp[i] += dp[i-num]0-1揹包問題,且,是組合問題(順序不影響)nums在外,target在內,且target倒序迴圈

題解

把所有符號為正的數總和設為乙個揹包的容量,容量為x;

把所有符號為負的數總和設為乙個揹包的容量,容量為y。

在給定的陣列中,有多少種選擇方法讓揹包裝滿。

令sum為陣列的總和,則x+y = sum。

而兩個揹包的差為s,則x-y=s。(s已知)

從而求得x=(s+sum)/2。

基於上述分析,題目轉換為揹包問題:給定乙個陣列和乙個容量為x的揹包,求有多少種方式讓揹包裝滿。

class solution 

if (s>sum || (s+sum)%2==1) return 0;

int target = (s + sum) / 2;

int dp = new int[target + 1];

dp[0] = 1;

for (int num : nums) }}

return dp[target];}}

377. 組合總和 ⅳ (完全揹包+順序有關)

先給這道題定性

排列問題:dp[i] += dp[i-num]完全揹包問題:且是 排列問題(順序有關)

看懂的題解

416. 分割等和子集(0-1揹包 + 順序無關)

可以使用動態規劃解決

也可以使用 回溯+剪枝

明確問題性質

組合問題:dp[i] = dp[i] || dp[i-num]0-1揹包 且 組合: nums 在外迴圈, target在內迴圈 且 逆序

public boolean canpartition(int nums) }}

return dp[target];

}

139. 單詞拆分 (完全揹包+順序有關)

給問題定性

排列問題: dp[i] = dp[i] || dp[i-num]

完全揹包 且順序有關: target在外迴圈 nums在內迴圈

322. 零錢兌換 (完全揹包+順序無關)

明確問題性質

最大最小值問題:dp[i] = min(dp[i], dp[i-num]+1)或者dp[i] = max(dp[i], dp[i-num]+1)完全揹包問題: 且 順序無關 nums 在外迴圈、target在內迴圈

public int coinchange(int coins, int amount) }}

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

}

474. 一和零 (01揹包+順序無關)

明確問題性質

public int findmaxform(string strs, int m, int n)  else 

}// system.out.println("ones: " + ones);

// system.out.println("zeros: " + zeros);

// 計算不同揹包容量下的可能得到的結果

for (int i = m; i >= 0; i--) }}

}return dp[m][n];

}

三種簡單揹包問題模板 01揹包 完全揹包 多重揹包

概念 給定n種物品的價值和重量,每種物品最多只能取一次。求出當揹包容量為m時能夠裝下的最大價值 一維的寫法,dp陣列代表的是當前狀態能夠放下的最大價值 for int i 0 i w i j dp j max dp j dp j w i v i 對於第i件物品,可以放或不放。不放 dp j dp j...

混合三種揹包問題

問題 如果將01揹包 完全揹包 多重揹包混合起來。也就是說,有的物品只可以取一次 01揹包 有的物品可以取無限次 完全揹包 有的物品可以取的次數有乙個上限 多重揹包 應該怎麼求解呢?01揹包與完全揹包的混合 考慮到在01揹包和完全揹包中最後給出的偽 只有一處不同,故如果只有兩類物品 一類物品只能取一...

混合三種揹包問題

問題 如果將01揹包 完全揹包 多重揹包混合起來。也就是說,有的物品只可以取一次 01揹包 有的物品可以取無限次 完全揹包 有的物品可以取的次數有乙個上限 多重揹包 應該怎麼求解呢?01揹包與完全揹包的混合 考慮到在01揹包和完全揹包中最後給出的偽 只有一處不同,故如果只有兩類物品 一類物品只能取一...