322. 零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。

计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。

你可以认为每种硬币的数量是无限的。

示例 1:

输入:coins = [1, 2, 5], amount = 11

输出:3

解释:11 = 5 + 5 + 1

示例 2:

输入:coins = [2], amount = 3

输出:-1

解析:

经典多重背包问题,对于当前的背包大小,遍历每一个背包重量,得到前面重量需要的最小值.

class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
//多重背包
int n = coins.size();
vector<int> dp(amount + 1,INT_MAX);
dp[0] = 0;
for(int i = 0; i <= amount; i++){
for(int j = 0; j < n; j++){
//如果前一个重量可以拼出来
if(i >= coins[j]){
if(dp[i - coins[j]] != INT_MAX)
//转移,当前所需的个数和拿完第j个需要个数最小值
dp[i] = min(dp[i], dp[i - coins[j]] + 1);
}
}
}
return dp[amount] == INT_MAX ? -1 : dp[amount];
}
};

最新文章

  1. json转类
  2. 百度echart使用心得,百度图表。
  3. FTP的20、21端口,工作模式
  4. mormot 数据集转换为JSON字串
  5. CUBRID学习笔记 22 插入数据
  6. [工作积累] bitfield
  7. c++各种排序
  8. 卸载sqlserver数据库参考
  9. UML学习-状态图
  10. Java学习——何为JNDI
  11. MyEclipse使用总结——MyEclipse文件查找技巧
  12. Android 仿映客直播间给主播发送礼物(实现连击效果)
  13. JS数组根据属性来实现排序
  14. R语言︱构造新序列
  15. linux服务器中毒可疑进程sfewfesfs CPU80%
  16. seo优化做起来不是哪么简单,其实需要的是思维
  17. web优化(二)
  18. SQL优化方法:
  19. PYTHON语言之常用内置函数
  20. 换上 SansForgetica-Regular 字体,增加记忆能力

热门文章

  1. MySQL压缩包下载解压安装步骤
  2. 面试官就是要问我SpringMVC的源码,差点顶不住!
  3. 我的N年软件测试感悟
  4. WordPress安全篇(1):WordPress网站启用HTTPS详细教程
  5. WordPress安装篇(4):YUM方式安装LNMP并部署WordPress
  6. 【NX二次开发】Block UI 选择对象
  7. 【NX二次开发】图标图像
  8. Redis 面霸篇:高频问题横扫核心知识点
  9. 孟老板 Paging3 (二) 结合Room
  10. B站英文教学视频的字幕获取 学习必看!