当前位置: 首页 > news >正文

经典动态规划题目leetcode322. 零钱兑换

题目链接:https://leetcode.cn/problems/coin-change/description/

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

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

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

示例 1:

输入:coins = [1, 2, 5], amount = 11
输出:3
解释:11 = 5 + 5 + 1
示例 2:

输入:coins = [2], amount = 3
输出:-1
示例 3:

输入:coins = [1], amount = 0
输出:0

提示:

1 <= coins.length <= 12
1 <= coins[i] <= 231 - 1
0 <= amount <= 104

AC代码

#include <iostream>
#include <vector>using namespace std;int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount + 1, amount + 1);dp[0] = 0;for (int coin : coins) {for (int i = coin; i <= amount; ++i) {dp[i] = min(dp[i], dp[i - coin] + 1);}}return dp[amount] > amount ? -1 : dp[amount];
}int main() {vector<int> coins = {1, 2, 5};int amount = 11;cout << coinChange(coins, amount) << endl;return 0;
}

代码解释
这个C++程序首先定义了一个动态规划数组dp,其中dp[i]表示兑换i元所需的最少硬币数量。初始化时,dp[0]被设置为0,其他位置被设置为一个很大的数(这里设置为amount + 1)。

然后,程序遍历每个硬币,对于每个硬币,程序遍历从该硬币面值到amount的所有金额,更新dp数组。具体来说,对于每个金额i,程序比较兑换i元所需的最少硬币数量和兑换i - coin元所需的最少硬币数量加上1(即使用当前硬币),取两者中的最小值。

最后,程序返回dp[amount],即兑换amount元所需的最少硬币数量。如果dp[amount]大于amount,则表示无法兑换,返回-1。

http://www.lryc.cn/news/309806.html

相关文章:

  • python 使用curl_cffi 绕过jax3指纹-Cloudflare 5s盾
  • Python3学习笔记39-passlib
  • Matlab 机器人工具箱 动力学
  • Android ShellUtils手机管理器
  • 《梦幻西游》本人收集的34个单机版游戏,有详细的视频架设教程,值得收藏
  • 吴恩达机器学习全课程笔记第六篇
  • ue4.27 发现 getRandomReachedLocation 返回 false
  • 【C++ AVL树】
  • 记录一次架构优化处理性能从3千->3万
  • c++二进制位运算使用方法
  • TypeScript之JSON点语法调用
  • 手撕Java集合之简易版Deque(LinkedList)
  • MySQL知识点归纳总结(二)
  • vue:实现顶部消息横向滚动通知
  • [笔记] wsl 禁用配置 win系统环境变量+代理
  • Mysql标量子查询
  • 深入了解Java虚拟机(JVM)
  • Image Fusion via Vision-Language Model【文献阅读】
  • 探索Manticore Search:开源全文搜索引擎的强大功能
  • AI 笔记助手,你的思路整理助手
  • EchoServer回显服务器简单测试
  • 车灯修复UV胶的优缺点有哪些?
  • 探讨倒排索引Elasticsearch面试与实战:从理论到实践
  • 网安入门18-XSS(靶场实战)
  • 爬虫的一些小技巧总结
  • LeetCode---386周赛
  • React之数据绑定以及表单处理
  • Siamrpn++论文中文翻译(详细!)
  • 第一篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas库
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的停车位检测系统(Python+PySide6界面+训练代码)