leetcode能让人身心愉悦(误),每天抽出一点时间做一道题更是养生之道。今天做一道最经典的爬楼梯问题,即一次可以上一级或者两级台阶,求上n级台阶有多少种组合。这样的问题属于动态规划问题,也就是说,我们只需要关注之前一步的子问题的求解,而子问题的求解又只决定于之前次子问题的解(有点像马尔科夫状态模型)。

既然是只关注之前的子问题,就可以用递归方法来求解了,愉快地写出答案,注意要留心边界条件,这样的极端情况在测试中屡见不鲜。

class Solution {
public:int climbStairs(int n) {if(n == 1)return 1;else if(n == 2)return 2;elsereturn climbStairs(n-2)+climbStairs(n-1);}
};

so easy,斐波那契数列,兔子问题都统统不在话下。。。得意忘形中,发现直接运算超时,仔细一想,函数在执行时需要申请栈来放置自身的变量,而递归更是加深了这个栈的长度,当台阶数过大时内存将会告罄。因此,我们可以做一个小trick,用容器记录下之前的求解,虽然也是递归思想,但只是单纯的数组计算而已。

class Solution {
public:int climbStairs(int n) {if(n == 1)return 1;else if(n == 2)return 2;else{std::vector<int> solution_list_;solution_list_.resize(n);solution_list_[0] = 1;solution_list_[1] = 2;for(int i = 2; i < n; ++i){solution_list_[i] = solution_list_[i-1] + solution_list_[i-2];}return solution_list_[n-1];}}
};

这样就愉快地解决了动态规划中的入门级问题。未完待续~

重读数据结构之爬楼梯问题(动态规划)相关推荐

  1. LeetCode 70. 爬楼梯(动态规划)

    题目链接:https://leetcode-cn.com/problems/climbing-stairs/ 之前在递归中讲过这个问题,现在用动态规划求解. 假设你正在爬楼梯.需要 n 阶你才能到达楼 ...

  2. LeetCode70. 爬楼梯 [简单]——动态规划

    题目描述: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 我的解题: 1.我的第一反应居然是做 ...

  3. 746. 使用最小花费爬楼梯 golang 动态规划

    746. 使用最小花费爬楼梯 746. 使用最小花费爬楼梯 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi. 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以 ...

  4. 学渣的刷题之旅 leetcode刷题 70.爬楼梯(动态规划)

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 输入: 2 输出: 2 解释: 有两种方法可以爬 ...

  5. 动态规划算法-01爬楼梯问题

    爬楼梯问题 动态规划 动态规划算法将带求解问题拆分成一系列相互交叠的子问题,通过递推关系定义各子问题的求解策略,并随时记录子问题的解,最终获得原始问题的解,避免了对交叠子问题的重复求解. 在动态规划算 ...

  6. 算法题目——使用最小花费爬楼梯(动态规划)

    题目链接:746.使用最小花费爬楼梯 方法:动态规划 假设数组cost的长度为n,则n个阶梯分别对应下标0到n- 1,楼层顶部对应下标n,问题等价于计算达到下标n的最小花费.可以通过动态规划求解. 创 ...

  7. 【力扣动态规划基础专题】:509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯 62. 不同路径 63. 不同路径 II 343. 整数拆分 96. 不同的二叉搜索树

    /** 动态规划专题:这是最简单的并且已经给出了转移方程,平时我们用dp[]数组来表示转移方程转移方程: dp[n] = dp[n-1]+dp[n-2]初始值:dp[0] = 0 , dp[1] = ...

  8. Leetcode 70. 爬楼梯 动态规划 c语言

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数.示例 1: 输入: 2 输出: 2 解释: 有两种 ...

  9. LeetCode-基础动态规划-70. 爬楼梯

    描述 70.爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出 ...

最新文章

  1. android简单分享----文字加图片
  2. Xamarin Android提示内存溢出错误
  3. 在 2016 年学 JavaScript 是一种什么样的体验?
  4. 多用户使用一台计算机可设置,多用户使用一台计算机的情况经常出现,这时可设置()...
  5. 高维数据使用npy格式保存
  6. Windows Server 2003服务器安装前设置
  7. 【报告分享】B2B内容营销指南—制定有效内容策略-领英.pdf(附下载链接)
  8. MAC Home-brew 和 Home-brew Cask
  9. 阿里云产品经理吴华剑:SLS 的产品功能与发展历程
  10. oracle rman异地备份,通过RMAN磁盘备份进行异地恢复
  11. win10/win11掉驱动问题
  12. 麦咖啡的设置,很长,如果你想百毒不侵的话。。
  13. iPXE部署Ubuntu无盘系统
  14. matlab ascii显示,matlab ASCII 格式导入
  15. 概率 (菜鸡 dalao轻喷
  16. A002-185-1203
  17. 双屏显示 鼠标不能从左侧滑入右侧竖屏
  18. 电脑新加内存条后 游戏崩溃 浏览器卡死 电脑蓝屏
  19. 【具体实现过程】百度地图POI区域的边界经纬度坐标数据采集
  20. python Opencv和pyautogui实现自动识图点击

热门文章

  1. 关于小米手机连接电脑,不能查看logcat日志的解决方法
  2. 诛仙3 私服架设 仿官网
  3. 跨境电商最新资讯——扬帆际海
  4. driftingblues4靶机(zbarimg二维码破解)
  5. 设计如下类: 1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端, 内含两个Point类的对象;建立Triangle类,表示一个三角形
  6. echarts 省级地图下钻到市demo
  7. 每个人心里都有一只孟加拉虎
  8. 制作pve引导盘---U盘安装Proxmox VE(一)
  9. nyoj 1275 导弹发射(河南省2016年省赛)
  10. 胡昌泽 day3笔记