爬楼梯(进阶版 )零钱兑换+完全平方数

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 

每次你可以爬至多m (1 <= m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢? 

注意:给定 n 是一个正整数。

这是一个完全背包问题(可以重复使用所以正向遍历,要用排列数所以要for要颠倒,

import java.util.Scanner;
class Main{public static void main(String args[]){Scanner scan=new Scanner(System.in);Main s=new Main();int n=scan.nextInt();int m=scan.nextInt();int result=s.Sa(n,m);System.out.println(result);}public int Sa(int n,int m){//n代表台阶,m代表可以爬的楼梯数int[] dp=new int[n+1];//dp[i]代表爬到i有多少种情况dp[0]=1;for(int i=1;i<=n;i++){//背包for(int j=1;j<=m;j++){if(i>=j){dp[i]+=dp[i-j];}}}return dp[n];}
}

零钱兑换(求最少硬币数,完全背包问题,可重复使用正序遍历,要求最小值所以先把数组都设为最大值便于更新。关键代码是要先保证dp[j - coins[i]] != max才更新

在这个算法中,max 是一个表示无法达到目标金额的标记值。如果 dp[j - coins[i]] 的值等于 max,说明无法通过当前的硬币 coins[i] 达到金额 j - coins[i],因此不能将当前的硬币添加到组合中,也就不需要更新 dp[j]

class Solution {public int coinChange(int[] coins, int amount) {int[] dp=new int[amount+1];//dp[j]表示达到目标有几个硬币int max=Integer.MAX_VALUE;for(int i=0;i<dp.length;i++){dp[i]=max;}dp[0]=0;for(int i=0;i<coins.length;i++){for(int j=coins[i];j<=amount;j++){if (dp[j - coins[i]] != max) {//选择硬币数目最小的情况dp[j] = Math.min(dp[j], dp[j - coins[i]] + 1);}}}return dp[amount]==max?-1:dp[amount];}
}

完全平方数(都可以达到,可重复使用,完全背包

class Solution {public int numSquares(int n) {int[] dp=new int[n+1];//dp[j]表示又最少完全平方数组成int max=Integer.MAX_VALUE;for(int i=0;i<=n;i++){dp[i]=max;}dp[0]=0;//!!没有初始化for(int i=1;i*i<=n;i++){for(int j=i*i;j<=n;j++){dp[j]=Math.min(dp[j],dp[j-i*i]+1);}}return dp[n];}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8427.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

夏天一到,手机越用越烫?怎样降低持久使用手机时的温度?

夏季来临&#xff0c;手机的温度也随着使用环境的温度升高变得更容易发热。 虽说属于正常的物理现象&#xff0c;但手机过热用起来还是不太舒服&#xff0c;还容易出现过热提醒&#xff0c;导致除“拨号”和“联系人”外&#xff0c;无法使用其它应用。 分享几个减少功耗的小技…

安装pcl

安装PCL git clone https://github.com/PointCloudLibrary/pcl.git cd pcl mkdir build cd build cmake .. cmake -DCMAKE_BUILD_TYPERelease .. make -j2 sudo make -j2 install如果你不想使用Metslib&#xff08;一个例子&#xff09;或者找不到它&#xff0c;你可以修改PCL…

JAVA版本的ATM编程问题记录

前段时间用C语言写了个银行ATM系统&#xff0c;还写了一篇文章记录了一些&#xff0c;C语言的ATM文章。后来又用IDEA写了一个JAVA版本的银行ATM。有人就会问为啥浪费这个时间写ATM呢&#xff1f;&#x1f9d0;其实是我本科代码没学好&#xff0c;所以现在想利用比较熟悉的ATM系…

Spring Web MVC 快速入门

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Spring学习之路&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 什么是Spring MVC&#xff1f; MVC模式介绍 ​编辑学习Spring MVC…

node.js对数据库mysql的连接与操作(增、删、改、查、五种SQL语法)

前提&#xff1a;先在vscode终端下载安装mysql&#xff1a;npm install mysql -save 步骤总结&#xff1a; (1)建立与数据库的连接 (2)做出请求&#xff1a; 实际上就是操作mysql里的数据。增删改查 insert、delete、updata、select (3)通过回调函数获取结果 一、什么是SQ…

【电容】220V整流后加不加滤波电容,加多大,加了后为什么测得电压不一样了?

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计

机器学习笔记03

1.线性回归&#xff08;linear regression&#xff09; 是利用回归方程&#xff08;函数&#xff09;对一个或者多个自变量&#xff08;特征值&#xff09;和因变量&#xff08;目标值&#xff09;之间关系进行建模的一种分析方法。 线性模型&#xff1a; 1.线性关系&#xff1…

【Kubernetes集群一主二从安装教程】

文章目录 环境准备主机间做信任安装ansible工具 升级内核版本使用elrepo源升级内核查看最新版内核安装最新的内核版本设置系统默认内核设置默认内核为我们刚才升级的内核版本 初始化关闭防火墙关闭selinux关闭swap修改主机名修改hosts文件将桥接的IPv4流量传递到iptables的链配…

论系统测试在互联网诈骗信息防范系统中的应用

引言 随着互联网的普及&#xff0c;互联网诈骗活动也日益猖獗。为了防范互联网诈骗&#xff0c;构建一个有效的互联网诈骗信息防范系统至关重要。系统测试在该系统中发挥着至关重要的作用&#xff0c;可以确保系统满足用户需求&#xff0c;并符合既定的质量标准。 系统测试的…

nlp课设 - 基于BERT 的情感分类

基于BERT 的情感分类 主要论文&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding&#xff08;双向Transformer 的预训练&#xff09; 核心技术&#xff1a; Embedding 、Attention --> Transformer 任务简介、拟解决问题…

什么是oneflow

一&#xff0c;什么是OneFlow&#xff1f; OneFlow是一个用于机器学习的开源软件框架&#xff0c;它允许研究人员和开发人员设计、训练和部署机器学习模型。机器学习是人工智能的一个分支&#xff0c;它使计算机能够从数据中学习并做出预测或决策&#xff0c;而不需要明确编程…

09 - 数据清洗案例

流程图 kettle 面板图片 操作步骤 1、订阅数据源&#xff08;kafka consumer&#xff09; 2、抽取字段并转换key&#xff08;JSON input&#xff09; 3、判断img字段是否有值&#xff0c;有的话进行url转base64&#xff08;JavaScript 代码&#xff09; // 获取输入字段的值 v…

流量分析利器arkime的学习之路(三)---结合Suricata攻击检测

1、基础 Arkime安装部分参考《流量分析利器arkime的学习之路&#xff08;一&#xff09;—安装部署》 在此基础上安装suricata软件并配置。 2、安装suricata yum install suricate 可能依赖的文件包括libyaml&#xff0c;PyYAML&#xff0c;这些可能在之前安装arkime或者其他…

【遥感图像】多光谱与全色图像相关知识总结

多光谱图像&#xff08;MS&#xff09;和全色图像&#xff08;PAN&#xff09;是遥感技术中常用的两种图像类型&#xff0c;它们各自具有独特的特点和应用优势。以下是对这两种图像类型的详细解释和分析&#xff1a; 多光谱图像 (MS) 光谱分辨率&#xff1a;MS图像由多个光谱波…

面试二十四、继承多态

一、继承的本质和原理 组合&#xff08;Composition&#xff09;&#xff1a; 组合是一种"有一个"的关系&#xff0c;表示一个类包含另一个类的对象作为其成员。这意味着一个类的对象包含另一个类的对象作为其一部分。组合关系通常表示强关联&#xff0c;被包含的对象…

什么是状态模式,有哪些应用?

一、定义及应用场景&#xff1a; 状态模式允许一个对象在其内部状态发生改变时改变它的行为&#xff0c;使其看起来像是修改了其类。它通过将对象的行为包装在不同状态对象中&#xff0c;实现了在运行时更改对象的状态&#xff0c;从而影响其行为。 状态模式也有很多实际的应…

Terrain —— Nodes

目录 Convert HeightField —— 转化高度场 HeightField —— 为地形创建初始高度场或遮罩场 HeightField Blur —— 模糊高度场或遮罩场 HeightField Clip —— 限制高度场的值 HeightField Combine Layers —— 将多个volume或VDB合并为一个新的volume或VDB HeightFiel…

我独自升级崛起怎么玩 我独自升级崛起游玩教程分享

《我独自升级&#xff1a;ARISE》是一款预计在 Android、iOS 和 PC 平台推出的动作 RPG&#xff0c;故事内容基于网络漫画版本改编&#xff0c;讲述世界各地出现「次元传送门」&#xff0c;而少部分人类觉醒了可以对抗传送门中怪物的「猎人」能力&#xff0c;玩家可以在故事模式…

【进程等待】是什么 | 为什么 | 怎么办 | wait阻塞等待

目录 进程等待是什么&#xff1f; 为什么要进程等待&#xff1f; 如何进程等待&#xff1f; wait 阻塞等待 进程等待是什么&#xff1f; 进程终止会把进程退出的数据&#xff08;退出码和退出信号&#xff09;存放到进程的PCB中保存下来&#xff0c;让父进程进行等待。…

【投稿资讯】区块链会议CCF C -- CoopIS 2024 截止7.10 附录用率

会议名称&#xff1a;CoopIS CCF等级&#xff1a;CCF C类学术会议 类别&#xff1a;人机交互与普适计算 录用率&#xff1a;2023年接收率21% (21 regular 10 work-in-progress papers/100) AREA 5: HUMAN-CENTRIC SECURITY AND PRIVACY IN INFORMATION SYSTEMS Access Con…