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

算法训练营第四十八天 | 卡码网57 爬楼梯、LeetCode 322 零钱兑换、LeetCode 279 完全平方数

卡码网57 爬楼梯


  排列dp + 完全背包问题

代码如下:

import java.util.*;public class Main {public static void main(String[] args) {int n, m;Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();int[] dp = new int [n + 1];dp[0] = 1;for (int j = 0; j <= n; j++) {for (int i = 1; i <= m; i++) {if (j >= i) {dp[j] += dp[j - i];}}}System.out.println(dp[n]);}
}

LeetCode 322 零钱兑换


  这题dp数组含义和完全背包其实是完全相反的,要求能组成所要求总金额的最小钱币数。但是递推公式和完全背包问题几乎是完全一样了。只不过要注意初始化时候除dp[0]之外不能初始化为0,否则按照递推逻辑就会全部是0了。我们可以采取将dp[i]初始化为i+1的形式,最后如果还是等于i+1说明没有硬币组合满足条件,直接返回-1即可。

  递推逻辑中也要判断dp[j-coins[i]]是否等于j-coins[i]+1看递推中的子问题是否已经有解。

代码如下:

class Solution {public int coinChange(int[] coins, int amount) {int[] dp = new int[amount + 1];for (int i = 1; i <= amount; i++) dp[i] = i + 1;for (int i = 0; i < coins.length; i++) {for (int j = 0; j <= amount; j++) {if (j >= coins[i] && dp[j - coins[i]] != j - coins[i] + 1)dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);}}if (dp[amount] == amount + 1) return -1;return dp[amount];}
}

LeetCode 279 完全平方数


  在上面两题理解了的基础上很容易想出来。

代码如下:

class Solution {public int numSquares(int n) {int x = (int)Math.sqrt(n);int[] dp = new int[n + 1];for (int i = 1; i <= n; i++) dp[i] = i + 1;for (int i = 1; i <= x; i++) {for (int j = 0; j <= n; j++) {if (j >= i * i && dp[j - i * i] != j - i * i + 1) {dp[j] = Math.min(dp[j], dp[j - i * i] + 1);}}}return dp[n];}
}

相关文章:

  • 《雅思口语真经总纲1.0》笔记——第二章:官方评分标准真经——Fluency Coherence 流利度和连贯性(1、连贯性)
  • 深度学习知识与心得
  • 使用反射调用Android隐藏API
  • 算法简单笔记4
  • [FreeRTOS 基础知识] 栈
  • 【源码】多语言H5聊天室/thinkphp多国语言即时通讯/H5聊天室源码/在线聊天/全开源
  • 【vscode免密连接云服务器】
  • PHP 操作日期各种转换,常见日期转换,涉及聊天时间转换、涉及日周月年转换、涉及到图表日期转换
  • 【TB作品】MSP430F5529单片机,温控小风扇,DS18B20温度读取,PWM风扇
  • 【Git】在错误分支上开发了怎么办
  • WIFI 万[néng]钥匙 v5.0.10/v4.9.80 SVIP版!
  • 直播分享|深入解析ts-morph:通过注释生成类型文档
  • 102.网络游戏逆向分析与漏洞攻防-ui界面的设计-反隐身功能的界面设计与实现(有不使用MFC生成,自己手写代码创建复选框与事件的例子)
  • imx6ull - 制作烧录SD卡
  • 特征工程技巧—Bert
  • 【mysql】环境安装、服务启动、密码设置
  • conda常用的命令
  • Create React App 使用
  • Kibana配置logstash,报表一体化
  • nodejs实现webservice问题总结
  • Python学习笔记 字符串拼接
  • vue数据传递--我有特殊的实现技巧
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 不上全站https的网站你们就等着被恶心死吧
  • 对象引论
  • 技术发展面试
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我这样减少了26.5M Java内存!
  • 智能网联汽车信息安全
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # Redis 入门到精通(八)-- 服务器配置-redis.conf配置与高级数据类型
  • #数据结构 笔记一
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (web自动化测试+python)1
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .net 程序发生了一个不可捕获的异常
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net接口调试与案例
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @EventListener注解使用说明
  • [ C++ ] STL---stack与queue
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [ARM]ldr 和 adr 伪指令的区别
  • [HNOI2010]BUS 公交线路
  • [leetcode hot 150]第二十三题,合并K个升序链表
  • [leetcode] 61. 旋转链表