算法题(2):三步问题

news2024/12/15 23:50:27

审题:需要输出小孩上楼梯的方式的数量(需要取模)

思路:

如果正面来思考这个问题会无从下手,因为我们的分类太多了,没有办法把大问题缩小。

但是如果反过来思考,小孩最后一步有几种情况,那就简单了,因为小孩只可以有三种步幅,分别是1步,2步,3步。

也就是说,小孩上到最后一级台阶的方式就是最后走1/2/3步的那三个台阶的方式数相加

f(n)= f(n-1) + f(n-2) +f(n-3)

此时我们的递归的式子就出来了

所以本题我们先尝试写递归的方法,如果超时了再换循环写法。

 方法一:递归

这个递归的逻辑就是每次都返回n-1台阶+n-2台阶+n-3台阶的方式数,最后递归到第一到三级台阶结束递归。

这里由于递归比较耗时间,所以没通过。那么我们换循环的方式来写

方法二:循环

 

利用数组进行数据存储,并把下标和台阶数对齐(这样子就可以直接返回台阶对应的元素内容了)

和递归从后往前递归不一样,循环需要从前往后依次算出走到对应台阶的方式数,最后全部计算出来后,再返回第n个台阶的方式数

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

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

相关文章

Quad Remesher使用教程

为什么要拓扑? 我们知道,模型在三维软件中的表现,是由一系列的面通过不同角度组合而成的。3D模型制作层面上的拓扑,按我的理解来说,就是一个模型的面的结构分布——布线。想表现和制作一个三维模型,有无限…

Android 使用Overlay现实主题切换

最近项目上,想做一个主题切换的功能,整理了一下发布出来,主要使用的是IOverlayManager,大体思路如下: 1、想切换的应用,各自做overlay apk(简称皮肤包) 2、将overlay apk push 到v…

apk反编译修改教程系列-----超简单修改apk中名称 包名 布局文本以及其中的文字选项 手机设置中apk对应修改演示【三十三】

💝💝💝在反编译apk中,每个初学者可能最感兴趣入门的就是修改包名 去更新以及其中选项文本的修改。这样循序渐进来激发学习的兴趣。了解一些apk中常见的修改方法。对于修改手机rom中的 系统类等等的apk原理都是一样的。这篇是应粉丝需要的修改apk基础教程. 通过博文了解…

02HBuilder工具准备

一、下载网址: HBuilder 使用教程 | 菜鸟教程 DCloud - 数字天堂官网、HBuilderX、HBuilder、uni-app、uniapp、5、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架 二、下载 三、解压 四、启动程序

记一个framebuffer显示混乱的低级错误

记一个framebuffer显示混乱的低级错误 由于framebuffer的基础知识不扎实,这个任务上我多卡了两天,差点把我搞死,于此记录为后鉴。 打算用awtk做一个多进程项目,计划把framebuffer的内容通过websocket输出到浏览器上去显示画面, …

C++---入门

C补充了上的不足,使用各方面更加便捷,在C的基础上面向对象进行编译,学过C之后,对学习C的一定的帮助。 命名空间: namesp的定义:定义命名空间,需要使⽤到namespace关键字,后⾯跟命…

boost电路的同步和异步模式 及CCM、DCM模式 介绍

一、同步 异步 1.一般区别 电路结构 异步升压 IC:采用传统的 Boost 电路结构,主要由电感、开关管、二极管和输出电容等组成。同步升压 IC:与异步升压 IC 的 Boost 电路相比,其将二极管替换成了一个同步整流 MOS 管,…

yolov7源码解读1-训练前准备

一、怎么解决图片输入尺度不统一的问题 YOLOv7的矩形训练是指在训练时对输入图片进行尺寸调整,以提高模型处理长宽比差异较大的图片时的性能,同时避免过多的图像变形。具体来说,以下是矩形训练的处理过程: 1. 矩形训练的核心目标…

用梗营销来启动市场

目录 为什么梗营销适合初创公司 有效的梗营销技巧 梗不仅仅是有趣的图片,它们是包裹在幽默中的文化时刻。对于小企业家(以及大企业家),梗代表了一种强大且性价比高的市场推广方式。让我们分解一下为什么梗营销有效,以…

职业院校人工智能实验室解决方案

随着人工智能技术的迅猛发展,企事业单位对具备高素质技术应用能力的人才需求愈发迫切,目前人工智能已经逐步从感知理解阶段转变为生成创造阶段,可以为各行各业提供多维的智能化应用服务。2024年的《政府工作报告》中首次提出了“人工智能”行…

java之集合(详细-Map,Set,List)

1集合体系概述 1.1集合的概念 集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。 1.2集合分类 集合分为单列集合和多列集合 Collection代表单列集合,每个元素(数据&#xff…

ansible自动化运维(一)简介及清单,模块

相关文章ansible自动化运维(二)playbook模式详解-CSDN博客ansible自动化运维(三)jinja2模板&&roles角色管理-CSDN博客ansible自动化运维(四)运维实战-CSDN博客 ansible自动化运维工具 1.什么是自…

期末复习-编译原理

一、引论 1.编译、翻译、解释的概念(掌握) 翻译程序:将一种语言程序(源)转换成另一种语言程序(目标),两者在逻辑上是等价的。 如果源语言是高级语言,目标语言是低级语言…

pytorch bilstm crf的教程,注意 这里不支持批处理,要支持批处理 用torchcrf这个。

### Bi-LSTM Conditional Random Field ### pytorch tutorials https://pytorch.org/tutorials/beginner/nlp/advanced_tutorial.html ### 模型主要结构: ![title](sources/bilstm.png) pytorch bilstm crf的教程,注意 这里不支持批处理 Python version…

docker安装、升级、以及sudo dockerd --debug查看启动失败的问题

1、docker安装包tar下载地址 Index of linux/static/stable/x86_64/ 2、下载tgz文件并解压 tar -zxvf docker-24.0.8.tgz 解压后docker文件夹下位docker相关文件 3、将老版本docker相关文件,备份 将 /usr/bin/docker下docker相关的文件,mv到备份目录…

hive—炸裂函数explode/posexplode

1、Explode炸裂函数 将hive某列一行中复杂的 array 或 map 结构拆分成多行(只能输入array或map) 语法: select explode(字段) as 字段命名 from 表名; 举例: 1)explode(array)使得结果中将array列表里的每个元素生…

【Android学习】RxJava

文章目录 资料连接1. Merge & Zip操作符: 合并数据源2. Map & FlapMap & ConcatMap & Buffer: 变换操作符3. retry & retryUntil & retryWhen : 错误处理操作符4. Transformer & Compose 转换符 资料连接 Android RxJava: 这是一份全面…

浅谈Kubernetes(K8s)之RC控制器与RS控制器

1.RC控制器 1.1RC概述 Replication Controller 控制器会持续监控正在运行的Pod列表,并保证相应类型的Pod的数量与期望相符合,如果Pod数量过少,它会根据Pod模板创建新的副本,反之则会删除多余副本。通过RC可实现了应用服务的高可用…

直流开关电源技术及应用

文章目录 1. 开关电源概论1.1 开关电源稳压原理1.1.1 开关电源稳压原理核心组成部分及其作用工作过程稳压原理 1. 开关电源概论 1.1 开关电源稳压原理 为了提高效率,必须使功率调整器件处于开关工作状态。 作为开关而言,导通时压降很小,几乎…

解决 MyBatis 中空字符串与数字比较引发的条件判断错误

问题复现 假设你在 MyBatis 的 XML 配置中使用了如下代码&#xff1a; <if test"isCollect ! null"><choose><when test"isCollect 1">AND exists(select 1 from file_table imgfile2 where task.IMAGE_SEQimgfile2.IMAGE_SEQ and im…