动态规划--持续更新篇

将数字变成0的操作次数

1.题目

2.思路

numberOfSteps函数中,首先设置f[0]为0,因为0已经是0了,不需要任何步骤。然后,使用一个for循环从1迭代到输入的整数num。对于每个整数i,如果i是奇数,则将f[i]设置为f[i-1] + 1,表示将i变为0需要先将i-1变为0,然后再执行一次减1操作。如果i是偶数,则将f[i]设置为f[i/2] + 1,表示将i变为0需要先将i/2变为0,然后再执行一次除以2的操作。

最后,main函数从用户那里获取一个整数输入,并调用numberOfSteps函数来计算将该整数变为0所需的步骤数,然后将结果输出到控制台。

3.代码

package 动态规划;import java.util.Scanner;public class 将数字变成0 {static int maxn=1000001;static int [] f =new int[maxn];public static int numberOfSteps(int num) {f[0]=0;for(int i=1;i<=num;++i) {if(i%2==1) {f[i]=f[i-1]+1;}else {f[i]=f[i/2]+1;}}return f[num];}public static void main(String[] args) {System.out.print("输入:num = ");Scanner sc= new Scanner(System.in);int num=sc.nextInt();System.out.print("输出: "+numberOfSteps(num));			}
}

4.知识

重点是 清楚 奇偶情况下的运算代码

        f[0]=0;for(int i=1;i<=num;++i) {if(i%2==1) {f[i]=f[i-1]+1;}else {f[i]=f[i/2]+1;}}

爬楼梯的最少成本

1.题目

数组的每个下标作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i],下标从0开始。每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选择向上爬一个阶梯或者爬两个阶梯。请找出达到楼层顶部的最低花费。在开始时,你可以选择从下标为0或1的元素作为初始阶梯

2.思路

到达最后一个阶梯的最低花费就是到达倒数第二个阶梯的最低花费和到达最后一个阶梯的花费之和

或者就是到达倒数第一个阶梯的最低花费和到达最后一个阶梯的花费之和  

3.代码


public class 爬楼梯的最少成本 {public static int minCost(int[] cost) {if(cost==null||cost.length==0) {return 0;}if(cost.length==1) {return cost[0];}//dp[i] 表示到达第i个阶梯的最低花费int[] dp=new int[cost.length];//初始化前有两个阶梯的花费dp[0]=cost[0];dp[1]=cost[1];//填充dp数组for(int i=2;i<cost.length;i++) {//到达第i个阶梯的最低花费是到达第i-1个阶梯和//第i-2个阶梯的最低花费中的最小值加上当前阶梯的花费dp[i]=Math.min(dp[i-1], dp[i-2]+cost[i]);}return Math.min(dp[cost.length-1], dp[cost.length-2]);}public static void main(String[] args) {	int[] cost= {10,15,20};System.out.println(minCost(cost));}
}

4.知识

    //填充dp数组
    for(int i=2;i<cost.length;i++) {
            //到达第i个阶梯的最低花费是到达第i-1个阶梯和
            //第i-2个阶梯的最低花费中的最小值加上当前阶梯的花费
            
            dp[i]=Math.min(dp[i-1], dp[i-2]+cost[i]);
     }
    return Math.min(dp[cost.length-1], dp[cost.length-2]);

到达最后一个阶梯的最低花费就是到达倒数第二个阶梯的最低花费和到达最后一个阶梯的花费之和 或者就是到达倒数第一个阶梯的最低花费和到达最后一个阶梯的花费之和 。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

igolang学习3,golang 项目中配置gin的web框架

1.go 初始化 mod文件 go mod init gin-ranking 2.gin的crm框架 go get -u github.com/gin-gonic/gin 3.go.mod爆红解决

uniapp开发微信小程序跳转到另一个小程序中

注意&#xff1a;一开始我的云上务工模块是单独的tabbar界面&#xff0c;但是小程序跳转好像不能直接点击tabbar进行&#xff0c;所以我将这里改成了点击首页中的按钮进行跳转 点击这里进行小程序跳转 目录 基础讲解 uniapp小程序跳转的两个方法 调用说明&#xff08;半屏跳转…

文件上传漏洞 (upload部分通关教程)

一、抓包修改后缀名绕过前端验证&#xff0c;实现上传木马&#xff08;第一关&#xff09; 只适合只有前端验证的网站 一句话木马&#xff1a; <?php eval($_POST[a]); ?> 保存到文件中&#xff1a; 使用第一关直接上传&#xff0c;报错&#xff1a; 按照网站要求…

国内Twitter账号注册要注意什么?注册多个Twitter账号如何防止被封?

在这个数字化快速发展的时代&#xff0c;Twitter作为一个全球性的社交媒体平台&#xff0c;对于个人品牌塑造乃至跨境电商均有着不可忽视的影响力。然而&#xff0c;在中国大陆地区&#xff0c;对于Twitter账号注册以及如何安全地注册多个Twitter账号这样的话题&#xff0c;往往…

《初阶数据结构》尾声

目录 前言&#xff1a; 《快速排序&#xff08;非递归&#xff09;》: 《归并排序》&#xff1a; 《归并排序&#xff08;非递归&#xff09;》&#xff1a; 《计数排序》&#xff1a; 对于快速排序的优化&#xff1a; 分析&#xff1a; 总结&#xff1a; 前言&#xff1a…

vue3 toRefs之后的变量修改方法

上效果 修改值需要带上解构之前的对象名obj&#xff0c; changeName:()>{ // toRefs 解决后变量修改值方法&#xff1a; 解构前变量.字段新值 obj.name FEIFEI; } } 案例源码 <!DOCTYPE html> <html> <head><me…

APP被针对攻击了,要怎么解决

随着APP行业的兴起&#xff0c;游戏公司异军突起&#xff0c;不管是在控证还是攻击方面都是属于最复杂的一个场面&#xff0c;游戏APP逐渐成为DDOS流量攻击的“重灾区”。没有提前做好了解就盲目进军游戏APP行业&#xff0c;一旦被攻击就会让公司束手无策。那么&#xff0c;刚上…

【前端素材】推荐优质后台管理系统APP Zina平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时&#xff0c;可以将其功能和定义进一步细分&#xff0c;以便更好地理解其在不同方面的作用和实际运作。 1. 功能层次 a. 用户管理功能&#xff1a; 用户注册和登录&#xff1a;管理用户账户的注册和登录过程。权限管…

Vue 中 onclick和@click区别

文章目录 一、直接上结论二、验证代码&#xff0c;可直接运行三、点击结果 一、直接上结论 onclick 只能触发 js的原生方法&#xff0c;不能触发vue的封装方法click 只能触发vue的封装方法&#xff0c;不能触发js的原生方法 二、验证代码&#xff0c;可直接运行 <!DOCTYP…

【LeetCode刷题笔记】242.有效的字母异位词

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(一)

【寸铁的刷题笔记】树、dfs、bfs、回溯、递归(一) 大家好 我是寸铁&#x1f44a; 总结了一篇刷题关于树、dfs、bfs、回溯、递归的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 105. 从前序与中序遍历序列构造二叉树 模拟分析图 代码实现 /*** Definition for a binary tre…

DataDreamer:让创建自定义数据集轻松无比!还自带标注!

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ash…

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(二)

一、需求分析 随着科技的飞速发展&#xff0c;视频监控联网技术在公安工作中发挥着越来越重要的作用。为了提高公安部门对各类事件的响应速度和处理能力&#xff0c;建设一个高效、稳定的公安视频联网共享云平台显得尤为重要。通过建设开放的视频联网共享云平台&#xff0c;实…

非洲数字经济持续崛起 本地化策略让传音提前入局

非洲市场&#xff0c;被誉为全球最后的“边疆级”市场&#xff0c;吸引着全球目光。近日&#xff0c;非洲开发银行最新报告指出&#xff0c;未来两年非洲的经济增长将优于世界其他地区&#xff0c;2023 年和 2024 年实际国内生产总值 (GDP) 平均约为 4%。广阔的非洲大陆焕发着勃…

【spring】 ApplicationListener的使用及原理简析

文章目录 使用示例&#xff1a;原理简析&#xff1a; 前言&#xff1a;ApplicationListener 是spring提供的一个监听器&#xff0c;它可以实现一个简单的发布-订阅功能&#xff0c;用有点外行但最简单通俗的话来解释&#xff1a;监听到主业务在执行到了某个节点之后&#xff0c…

【Python笔记-设计模式】对象池模式

一、说明 用于管理对象的生命周期&#xff0c;重用已经创建的对象&#xff0c;从而减少资源消耗和创建对象的开销 (一) 解决问题 主要解决频繁创建和销毁对象所带来的性能开销问题。如数据库连接、线程管理、网络连接等&#xff0c;对象的创建和销毁成本相对较高&#xff0c…

SOLIDWORKS Visualize 界面介绍

现在有越来越多的朋友在工作中选择使用SOLIDWORKS Visualize正版软件&#xff0c;这真是太棒了!这次的主题是小索带大家了解SOLIDWORKS Visualize界面&#xff0c;让更多的朋友快速的熟悉SOLIDWORKS Visualize界面。 【菜单栏】位于界面的顶端&#xff0c;菜单栏包含多个下拉菜…

[linux]进程间通信(IPC)———共享内存(shm)(什么是共享内存,共享内存的原理图,共享内存的接口,使用演示)

一、什么是共享内存 共享内存区是最快的&#xff08;进程间通信&#xff09;IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。注意&#xff1a;…

微软推出Windows照片编辑新功能:AI魔术橡皮擦生成擦除工具让照片修图更轻松

微软宣布推出生成擦除功能&#xff0c;该功能让用户在 Windows 捆绑的照片应用程序中使用人工智能技术对照片进行修改。这一功能类似于谷歌和三星设备上的 AI 选择性照片橡皮擦&#xff0c;让用户可以轻松消除照片中的不需要的元素&#xff0c;如狗的皮带或意外出现的人物。不仅…