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

【赛码网刷题】动态规划之上台阶

时间限制: 3000MS
内存限制: 589824KB

题目描述:

有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法?

注:规定从一级到一级有0种走法。
输入描述

输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。

输出描述:

对于每个测试实例,请输出不同走法的数量。

样例输入

2 2 3

样例输出

1 2

代码如下:

var n = read_line(); //表示实例个数
var arr = [];
var m; //m表示楼梯级数
var line;
while((line = read_line()) != ''){
  arr.push(parseInt(line))
  if(arr.length === parseInt(n)){
    for(let i = 0;i<n;i++){
      console.log(fun(arr[i]))
    }
  }
}
//判断楼梯级数整数m,共有几种走法
function fun(m){
  if(m>=4){
    return fun(m-1)+fun(m-2);
  }else if(m === 3){
    return 2;
  }else if(m === 2){
    return 1;
  }else if( m===1){
    return 0
  }
}

其中,这个赛码网要特别注意输入和输出数据
读取一行输入

read_line()

将读取至多1024个字符,当还未达到1024个时如果遇到回车或结束符,提前结束。
读取多行最简单的办法是

while((line = read_line()) != '')

所以上面的代码,

var n = read_line(); 

表示读取第一行数据n,n表示实例个数。
再定义一个数组用来存储n个楼梯级数
m表示楼梯级数。
定义一个line用来存放一行的数据。
以上是前4行的含义。

while((line = read_line()) != ''){
  arr.push(parseInt(line))
  if(arr.length === parseInt(n)){
    for(let i = 0;i<n;i++){
      console.log(fun(arr[i]))
    }
  }
}

while((line = read_line()) != ‘’)表示读取多行。
因为通过read_line()读取的数据都是字符串,所以在这个题上面我们需要转化为整型。我们将读取的第一行数据放到了line里面,再强制类型转换,把它压入数组中,接着我们判断一下数组的长度是不是我们输入的长度,如果是的话,就不需要再读取数据了,如果不是的话,就需要接着进行循环,需要再接着读取数据,进行强制类型转换,压入到数组中。此时我们的数组中存储的都是m的值,所以需要循环遍历数组,将这些数据进行处理。

在这里插入图片描述
其次,以上代码主体是判断楼梯级数整数m,共有几种走法,也就是fun函数,我们可以列出几个台阶,找找规律

阶数走法数
11
21
32
43
55
可以看出上面就是一个斐波那契数列,可以总结出 f(n)=f(n-1)+f(n-2)的递推关系式,所以就有上述写法。

相关文章:

  • Java 的开发效率究竟比 C++ 高在哪里?
  • python random应用实例 从可选池随机选取指定个数的元素并随机排序
  • 【Java成王之路】EE初阶第二十二篇 博客系统(页面设计)
  • 编译mtd-utils(使用uclibc编译)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • springboot网络安全考核平台设计毕业设计源码042335
  • 神经网络常用的训练方式,人工神经网络训练过程
  • WebSocket快速入门及基本使用
  • 牛视源码定制,抖音矩阵系统,别和谐啊、、、
  • 深度神经网络的可解释性,深度神经网络简单介绍
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • 海川QK1209 低压按键台灯充电 LED 驱动 IC- 昱灿电子
  • 受邀参加中日韩创新人才主题交流研讨会
  • 优炫软件董事长梁继良当选新一届北京市商会副会长
  • 5G与UWB定位技术融合的四种方式
  • 「面试题」如何实现一个圣杯布局?
  • CSS居中完全指南——构建CSS居中决策树
  • java8 Stream Pipelines 浅析
  • Javascript基础之Array数组API
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue 动态创建 component
  • Zsh 开发指南(第十四篇 文件读写)
  • 缓存与缓冲
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用 @font-face
  • 提醒我喝水chrome插件开发指南
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 小试R空间处理新库sf
  • 怎么将电脑中的声音录制成WAV格式
  • 终端用户监控:真实用户监控还是模拟监控?
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (+4)2.2UML建模图
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (算法二)滑动窗口
  • (学习日记)2024.01.09
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)JAVA中的堆栈
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET delegate 委托 、 Event 事件
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .Net的DataSet直接与SQL2005交互
  • .net反编译的九款神器
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .Net接口调试与案例
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc