zoukankan      html  css  js  c++  java
  • Leetcode 70.爬楼梯

    题目描述:

    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

    注意:给定 n 是一个正整数。

    示例 1:

    输入: 2
    输出: 2
    解释: 有两种方法可以爬到楼顶。
    1. 1 阶 + 1 阶
    2. 2 阶
    示例 2:

    输入: 3
    输出: 3
    解释: 有三种方法可以爬到楼顶。
    1. 1 阶 + 1 阶 + 1 阶
    2. 1 阶 + 2 阶
    3. 2 阶 + 1 阶

    很明显的动态规划的题目:

    看出来是因为在前一个阶段到后一个阶段之间的递推关系明显

    代码和斐波那契数列的求解方式类似

    但是编译以后代码有错误

    自己写的代码:

    int climbStairs(int n){
    //最后实际得到的跳台阶数字就是前一个加上前前一个
      int result[100];
      if(n==0||n==1)
        return 0;
      else
      {
        result[0]=2;
        result[1]=3;
        for(int i=2;i<100;i++)
        {
        result[i]=result[i-1]+result[i-2];
        }
      }
      return result[n-2];
    }
    

      

    错误提示:

    Line 12: Char 26: runtime error: signed integer overflow: 7540113804746346429 + 4660046610375530309 cannot be represented in type 'long long int' (solution.c)

    上述错误表示:运行时错误:有符号整数溢出:1836311903 + 1134903170不能用类型'int'表示(solution.c)

    主要原因是c语言中数组空间的创建和申请需要另外申明,不是直接使用就可以

    正确代码:

    int climbStairs(int n){
    //最后实际得到的跳台阶数字就是前一个加上前前一个
        int result[10000];
        result[1]=1;
        result[2]=2;
        for(int i=3;i<=n;i++)
        {
          result[i]=result[i-1]+result[i-2];
        }
        return result[n];
    }
    

      做题过程中没有想到

    for(int i=3;i<=n;i++)中的终止条件就是要求n,只要把n作为终止条件求到的值就是最后要求的值
  • 相关阅读:
    linux 内核升级
    maven 热部署至tomcat
    Executor多线程框架使用
    数据库中的一些连接
    Ajax传统操作
    第三篇、简单的图片下载器
    第二篇、通过蓝牙连接外设
    第一篇、实现上拉和下拉刷新
    解决Git报错:The current branch is not configured for pull No value for key branch.master.merge found in configuration
    Spark核心概念
  • 原文地址:https://www.cnblogs.com/redzzy/p/13723798.html
Copyright © 2011-2022 走看看