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

leetcode:518. 零钱兑换 II[完全背包]

学习要点

  1. 理解完全背包思想
  2. 理解一维数组的解法

题目链接

        518. 零钱兑换 II - 力扣(LeetCode)

题目描述

解法:二维数组

class Solution {
public:int change(int amount, vector<int>& coins) {if (amount == 0)return 1;// dp[i][j]  0-i中任意无限取凑成j的最大方式int n = coins.size();vector<vector<uint64_t >> dp(n, vector<uint64_t>(amount + 1, 0));// 初始化for (int i = 1; i <= amount; i++) {if (i % coins[0] == 0) {dp[0][i] = 1;}}for (int i = 0; i < n; i++) {dp[i][0] = 1;}// 开始动归for (int i = 1; i < n; i++) {for (int j = 1; j <= amount; j++) {if (coins[i] > j) {dp[i][j] = dp[i - 1][j];} else {dp[i][j] = dp[i - 1][j] + dp[i][j - coins[i]];}}}return dp[n - 1][amount];}
};

解法:一维数组

class Solution {
public:int change(int amount, vector<int>& coins) {// 完全背包组合问题if(amount == 0) return 1;int n = coins.size();vector<uint64_t> dp(amount+1,0);// dp[j] = dp[j]上一层 + dp[j-coins[i]]这一层 dp[0] = 1;for(int i = 0;i<n;i++){for(int j = coins[i];j<=amount;j++){dp[j] += dp[j-coins[i]]; }}return dp[amount];}
};

http://www.xdnf.cn/news/15210.html

相关文章:

  • Python 类型注解实战:`Optional` 与安全数据处理的艺术
  • 静态路由综合实验
  • GitHub敏感信息收集与防御指南
  • 人大金仓下载安装教程总结
  • 时间显示 蓝桥云课Java
  • 安卓应用启动崩溃的问题排查记录
  • P1722 矩阵 II 题解 DFS深度优先遍历与卡特兰数(Catalan number)解
  • 【实战】使用 ELK 搭建 Spring Boot Docker 容器日志监控系统
  • 【三维生成】FlashDreamer:基于扩散模型的单目图像到3D场景
  • 力扣-54.螺旋矩阵
  • “Datawhale AI夏令营”基于带货视频评论的用户洞察挑战赛
  • 敏捷测试中的质量闸门如何设置?
  • 【RL-VLM-F】算法框架图绘图学习笔记
  • 【PyTorch】PyTorch中的数据预处理操作
  • Java 与 MySQL 性能优化:MySQL连接池参数优化与性能提升
  • 7月10号总结 (1)
  • HTTP核心基础详解(附实战要点)
  • Android开发中几种scope的对比
  • 【TCP/IP】12. 文件传输协议
  • 力扣-73.矩阵置零
  • 如何安装python以及jupyter notebook
  • Rust中Option和Result详解
  • Unity WebGL文本输入
  • 【世纪龙科技】汽车信息化综合实训考核平台(机电方向)-学测
  • ClickHouse JSON 解析
  • Java代码块
  • Android 应用常见安全问题
  • JAVA JVM对象的实现
  • 【spring boot】三种日志系统对比:ELK、Loki+Grafana、Docker API
  • 长效住宅代理IP:反爬虫战场上的隐形盾牌