zoukankan      html  css  js  c++  java
  • 跳台阶&&矩形覆盖-剑指Offer

    跳台阶 && 矩形覆盖

    题目描述-跳台阶

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

    题目描述-矩形覆盖

    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

    思路

    1. 若有n个台阶,若先跳1阶,后面会有f(n-1)种跳法,若先跳2阶,后面会有f(n-2)种跳法。所以f(n)=f(n-1)+f(n-2)
    2. 矩形覆盖的道理和跳台阶一样,若用小矩形竖着占第一个,剩下f(n-1)种占法,若横着排俩,则剩下f(n-2)种排法,所以还是f(n)=f(n-1)+f(n-2)

    代码

    public class Solution {
        public int JumpFloor(int target) {
    		int[] result = {0, 1, 2};
            if (target < 3)
            {
                return result[target];
            }
    
            int temp01 = 1;
            int temp02 = 2;
            int jnum = 0;
            for (int i = 3; i <= target; i++)
            {
                jnum = temp01 + temp02;
                temp01 = temp02;
                temp02 = jnum;
            }
            return jnum;
        }
    }
  • 相关阅读:
    正则表达式
    linux中的三种时间
    用户,用户组
    inode与block
    linux文件属性
    linux的启动过程
    linux的重要子目录
    mail邮箱
    spark原理
    spark部署
  • 原文地址:https://www.cnblogs.com/rosending/p/5610703.html
Copyright © 2011-2022 走看看