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

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.dtcms.com/a/274100.html

相关文章:

  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_congestion_control
  • (LeetCode 每日一题) 3169. 无需开会的工作日 ( 排序+贪心 )
  • 力扣_二叉搜索树_python版本
  • 1965–2022年中国大陆高分辨率分部门用水数据集,包含:灌溉用水、工业制造用水、生活用水和火电冷却
  • 【unitrix】 4.21 类型级二进制数基本结构体(types.rs)
  • 李沐动手学深度学习Pytorch-v2笔记【07自动求导代码实现】
  • 进程管理中的队列调度与内存交换机制
  • Jenkins 系统管理与配置
  • 排序算法与前端交互优化
  • 持续集成 简介环境搭建
  • 14 TryHackMe 靶场 Wireshark: The Basics
  • CIU32L051系列 DMA串口无阻塞性收发的实现
  • CentOS 安装 JDK+ NGINX+ Tomcat + Redis + MySQL搭建项目环境
  • Redis5.0.5 漏洞
  • redis的一些疑问
  • windows下安装 redis
  • Redis全栈技术导航:从基础架构到实战案例的完整指南
  • 创客匠人:AI 时代创始人 IP 打造与知识变现的范式迁移
  • 什么是IP关联?跨境卖家如何有效避免IP关联?
  • LeetCode--43.字符串相乘
  • 软件过程模型核心特征与开发流程对照表
  • Android Glide使用与底层机制详解
  • 上位机知识篇---安装包架构
  • imx6ull-系统移植篇2—— U-Boot 命令使用(上)
  • Java 中线程通信方式笔记
  • tailwindCSS === 使用插件自动类名排序
  • ssm框架整合全攻略:从环境搭建到功能实现
  • 什么是Podman?能否替代Docker?Podman快速入门
  • dockerfile 笔记
  • STM32-DAC数模转换