零钱兑换
原题在这里:
经典题目就不多说题意了
1.记忆化广搜
code:
class Solution { struct ii { int x, y; ii(int a, int b) : x(a), y(b) {} friend bool operator<(ii a, ii b) { return a.y > b.y; } }; public: int coinChange(vector<int> &coins, int amount) { priority_queue<ii> q; q.push({amount, 0}); vector<bool> vis(amount + 1, false); int l = coins.size(); while (q.size()) { ii n = q.top(); q.pop(); if (vis[n.x]) continue; vis[n.x] = true; if (n.x == 0) return n.y; for (int i = l - 1; i >= 0; --i) if (n.x >= coins[i]) q.push({n.x - coins[i], n.y + 1}); } return -1; } };
2.效率肯定更好的DP
因为很直观简洁,一看就懂(我还是想都没想)。
class Solution { public: int coinChange(vector<int> &coins, int amount) { vector<int> dp(amount + 1, INT_MAX); dp[0] = 0; for (int i = 1; i <= amount; i++) for (int j = 0; j < coins.size(); j++) if (i - coins[j] >= 0 && dp[i - coins[j]] != INT_MAX) dp[i] = min(dp[i - coins[j]] + 1, dp[i]); if (dp[amount] == INT_MAX) return -1; return dp[amount]; } };
【Over】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!