32.变态跳台阶

简介: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。


解题思路:


分析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙一次性跳上n阶台阶的跳法数1(n阶跳),设定Fib(0) = 1;

      当n = 1 时, 只有一种跳法,即1阶跳:Fib(1) = 1;

      当n = 2 时, 有两种跳的方式,一阶跳和二阶跳:Fib(2) = Fib(1) + Fib(0) = 2;

      当n = 3 时,有三种跳的方式,第一次跳出一阶后,后面还有Fib(3-1)中跳法; 第一次跳出二阶后,后面还有Fib(3-2)中跳法;第一次跳出三阶后,后面还有Fib(3-3)中跳法

       Fib(3) = Fib(2) + Fib(1)+Fib(0)=4;

      当n = n 时,共有n种跳的方式,第一次跳出一阶后,后面还有Fib(n-1)中跳法; 第一次跳出二阶后,后面还有Fib(n-2)中跳法..........................第一次跳出n阶后,后面还有 Fib(n-n)中跳法.

                Fib(n) = Fib(n-1)+Fib(n-2)+Fib(n-3)+..........+Fib(n-n)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-1)

     又因为Fib(n-1)=Fib(0)+Fib(1)+Fib(2)+.......+Fib(n-2)

     两式相减得:Fib(n)-Fib(n-1)=Fib(n-1)         》  Fib(n) = 2*Fib(n-1)     n >= 2


也可以说Fib(n)=2^(n-1)

参考:跳台阶问题(变态跳台阶)的三种解法https://blog.csdn.net/u014082714/article/details/44406917


可参考的


//递归


int solution4(int n)

{

   if(n == 0 || n == 1)

       return 1;

   else

       return 2*solution4(n-1);

}

//变态跳滚动数组

int solution5(int n)

{

   int F[2]={0,1};

   if(n < 2)

       return F[n];

   for(int i=2;i<=n;i++)

   {

       F[0]=F[1];

       F[1]=2*F[0];

   }

   return F[1];

}

参考文章:https://blog.csdn.net/u014082714/article/details/44406917


解法:


递归:


class Solution {

   public:

    int jumpFloorII(int number)

    {

       if (number <= 0)

       {

           return -1;

       }

        else if (number == 1)

       {

           return 1;

       }

        else

       {

           return 2 * jumpFloorII(number - 1);

       }

   }

};

移位运算:


利用公式:Fib(n)=2^(n-1) 左移的位运算比乘法快


class Solution {

public:

   int jumpFloorII(int number) {

               int a=1; return a<<(number-1);

   }

};

迭代求法:


class Solution {

public:

   int jumpFloorII(int number)

   {

       int jumpFlo=1;

       while(--number)//减1之后的

       {

           jumpFlo*=2;

       }

       return jumpFlo;

   }

};

目录
相关文章
|
2天前
|
搜索推荐 API 对象存储
10分钟学会构建端到端的图片搜索服务
本文介绍在没有向量数据的情况下,怎样通过OpenSearch-向量检索版快速从零搭建图像搜索服务。
80937 4
|
4天前
|
容器 Perl Kubernetes
深入 Kubernetes 网络:实战K8s网络故障排查与诊断策略
本文介绍了Kubernetes网络的基础知识和故障排查经验,重点讨论了私有化环境中Kubernetes网络的挑战。首先,文章阐述了Kubernetes网络模型的三大核心要素:Pod网络、Service网络和CNI,并强调了其在容器通信和服务发现中的作用。接着,通过三个具体的故障案例,展示了网络冲突、主节点DNS配置更改导致的服务中断以及容器网络抖动问题的解决过程,强调了网络规划、配置管理和人员培训的重要性。最后,提到了KubeSkoop exporter工具在监控和定位网络抖动问题中的应用。通过这些案例,读者可以深入了解Kubernetes网络的复杂性,并学习到实用的故障排查方法。
123642 12
|
10天前
|
存储 安全 数据挖掘
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
第4代 AMD EPYC加持,云原生数仓AnalyticDB分析轻松提速。
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
|
7天前
|
机器学习/深度学习 算法 大数据
[ICLR 2024] 基于Pathways架构的自适应多尺度时间序列预测模型Pathformer
阿里云计算平台大数据基础工程技术团队主导,与华东师范大学数据科学与工程学院合作的论文《Pathformer: Multi-Scale Transformers With Adaptive Pathways For Time Series Forecasting》被ICLR 2024接收,该论文提出了基于Pathways架构的自适应多尺度时间序列预测模型Pathformer,它从时间分辨率和时间距离角度进行多尺度时序建模,同时进一步提出自适应Pathways来动态调整多尺度建模过程,基于两者,Pathformer在阿里云数据集和公开数据集上取得SOTA预测效果,并展现出不错的泛化性和迁移性。
|
8天前
|
人工智能 并行计算 监控
性价比提升50%,阿里云HPC优化实例hpc8ae正式商业化
近日,全球领先的云计算厂商阿里云宣布正式开启最新HPC优化实例hpc8ae 的商业化发布,该实例依托阿里云自研的「飞天+CIPU」架构体系,搭载第四代 AMD EPYC处理器,专为高性能计算应用优化,特别适用于计算流体、有限元分析、多物理场模拟等仿真类应用,CAE 场景下的性价比最少提升 50%。
|
9天前
|
关系型数据库 Serverless 分布式数据库
|
8天前
|
人工智能 前端开发 JavaScript
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
阿里云验证码产品,使用业界先进的风控引擎结合“规则+AI”模型,有效区分真实用户和机器自动化脚本攻击,避免机器请求造成业务损失。主要适用于垃圾注册、刷库撞库,薅羊毛,短信被刷等风险场景。为您提供安全可靠的业务环境。本文为大家介绍验证码使用时滑动验证流程及验证不通过的问题排查。
64708 2
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
|
10天前
|
安全 机器人 API
AppFlow实现大模型对话自由
AppFlow是阿里云团队推出的应用与数据集成平台,它无需编程即可配置对话流程,支持接入包括通义千问、文心一言等在内的多个主流大模型。用户可以通过AppFlow与钉钉、飞书、企业微信等IM软件中的大模型进行对话。配置过程包括创建连接流,选择触发事件(如钉钉机器人接收到文本消息),配置执行动作(如使用通义千问模型提问),以及设置回调地址等步骤。此外,还提供了在钉钉创建机器人的指南,通过Outgoing功能或钉钉开放平台实现与大模型的交互。如有问题,用户可以加入官方支持钉钉群进行咨询和交流。
54472 0
DeepRec Extension 打造稳定高效的分布式训练
DeepRec Extension 即 DeepRec 扩展,在 DeepRec 训练推理框架之上,围绕大规模稀疏模型分布式训练,我们从训练任务的视角提出了自动弹性训练,分布式容错等功能,进一步提升稀疏模型训练的整体效率,助力 DeepRec 引擎在稀疏场景中发挥更大的优势。
|
9天前
|
缓存 Kubernetes 安全
小而美:两步完成从源码到应用的极简交付
本文将主要介绍,如何通过 SAE 快速实现项目从源码到应用的交付与上线。
51605 1

热门文章

最新文章