加油!不要放弃,那些冲进清北复交的高材生的水平真不是盖的,名不虚传,有实力的全能选手。我在刷题的过程中不得不表达一下对他们的钦佩。
这里在遍历顺序上可就有说法了。
- 如果求组合数就是外层for循环遍历物品,内层for遍历背包。
- 如果求排列数就是外层for遍历背包,内层for循环遍历物品。
一、零钱兑换
leetcode题目链接:322. 零钱兑换
题目描述:
给你一个整数数组
coins
,表示不同面额的硬币;以及一个整数amount
,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回
-1
。你可以认为每种硬币的数量是无限的。
- 1、dp[j]含义:
装满容量为j的背包,最少物品dp[j]
- 2、确定递推公式:
dp[j] = Math.min(dp[j - coins[i]] + 1, dp[j])