322. 零钱兑换
✅装满完全背包的最小物品总价值
这里类型如题,不过是把价值改成了个数
故在初始化dp
数组时要注意初始化大一点。然后即是别忘了有dp[0] = 0
,这个是求价值的基础
然后因为是完全背包,所以背包容量遍历顺序为正序
因为这里是求价值,跟物品是组合还是排列无关,所以这里既可以先遍历物品,在遍历背包容量,也可以先遍历背包容量,在遍历物品
class Solution {
public:
//装满完全背包后得到的最少的价值(个数)
int coinChange(vector<int>& coins, int amount) {
vector<int>dp (amount + 1, 99999);
//别忘了dp[0] = 0
dp[0] = 0;
for (int i = 0; i < coins.size(); i++) {
for (int j = coins[i]; j < amount + 1; j++) {
dp[j] = min(dp[j], dp[j - coins[i]] + 1);
}
}
//如果dp[amount]没有被改变,则说明没有任何一种硬币组合能组成总金额
return dp[amount] == 99999 ? -1 : dp[amount];
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端