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

DP2 跳台阶【牛客网】

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


DP2 跳台阶

一、题目描述

在这里插入图片描述

二、测试用例

在这里插入图片描述

三、解题思路

  1. 基本思路:
      动态规划题目的难点基本在于构造状态转移方程,对应这题,我们可以发现每次跳跃我们可以选择跳一阶还是二阶,跳一阶是一种可能,跳两阶也是一种可能,后续选择怎么跳和当前选择怎么跳是有关系。倒过来看,总的跳跃方法可以变成最后一次是跳一阶的方法和最后一次是跳两阶的方法,最后一次跳一阶的方法数量有可以拆分成倒数第二次跳一阶和跳两阶的总和,依次类推,我可以得到状态转移方程: f ( n ) = f ( n − 1 ) + f ( n − 2 ) f(n)=f(n-1)+f(n-2) f(n)=f(n1)+f(n2)
  2. 具体思路:
      根据状态转移方程,其实就是求斐波那契数列,我们可以初始化两个变量都为 1,然后互相累加,直到算到第 n 个数为止。

四、参考代码

时间复杂度: O ( n ) \Omicron(n) O(n)
空间复杂度: O ( 1 ) \Omicron(1) O(1)

#include <iostream>
using namespace std;int main() {int n;cin >> n;int a = 1, b = 1;for (int i = 1; i < n; i+=2) {b += a;a += b;}if (n % 2 == 0) {cout << b;} else {cout << a;}
}
// 64 位输出请用 printf("%lld")
http://www.xdnf.cn/news/549289.html

相关文章:

  • [面试精选] 0001. 两数之和
  • 人工智能的“歧视”:“她数据”在算法运行中隐形
  • C46-二维数组与指针的总结
  • VUE3 中的 ResizeObserver 警告彻底解决方案
  • C#:多线程Task使用
  • c++使用protocol buffers
  • JS实现古诗竖排从右至左
  • 谈谈jvm的调优思路
  • c++学习方向选择说明
  • [软件工程]第二章题目汇总
  • MySQL 8.0窗口函数详解
  • 48、c# 中 IList 接⼝与List的区别是什么?
  • Gin--Blog项目-flags文件解析
  • RK3576 Android 14.0 SDK开发指南(第一集)
  • 丝杆升降机在锂电行业的自动化应用有什么?
  • Unity-编辑器扩展
  • 2025年护网行动蓝队防御全解析:构建智能动态防御体系
  • Raft算法学习(1)博士论文大纲
  • Go学习教程(附电子书资料)
  • 桥梁凝冰在线监测装置:科技守护道路安全的新防线
  • Python入门手册:Python简介,什么是Python
  • C++之fmt库介绍和使用(2)
  • GPS模块_亿佰特E108-GN04D_u-center2调试
  • Linux:面试题
  • CAU数据库class3 关系型数据库基础
  • WebSocket心跳机制
  • 85.评论日记
  • 【C++算法】69.栈_验证栈序列
  • C++类与对象--7 特性三:多态
  • # YOLOv5:目标检测的新里程碑