美文网首页
[动态规划]一次最多上3阶楼梯,最多几种上法

[动态规划]一次最多上3阶楼梯,最多几种上法

作者: 周末的游戏之旅 | 来源:发表于2019-09-23 11:37 被阅读0次

问题描述

有个小孩在上楼梯,楼梯有N阶,小孩一次可上1阶、2阶、3阶。实现一个算法,计算小孩有多少种上楼梯的方式。输入n返回一个整数。

思路

当楼梯只有一阶时,只有一种方法(1)
楼梯有两阶时,有两种方法(1)(2)
当楼梯有三阶时,有四种方法(111)(12)(21)(22)
当楼梯有n阶时,最后一次上楼的方法为(n-1)+(n-2)+(n-3)

namespace ChildStairs
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(CheckCountWays(4));
        }

        static int CheckCountWays(int n)
        {
            if (n == 1) return 1;
            if (n == 2) return 2;
            if (n == 3) return 4;
            return CheckCountWays(n-1)+ CheckCountWays(n-2)+ CheckCountWays(n - 3);
        }
    }
}

思考

使用递归的方式虽然简单,但效率低,可以采用备忘录式的动态规划进行优化

优化后的解

namespace ChildStairs
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(CountWays(4));
        }

        static int CountWays(int n)
        {
            Dictionary<int, int> dic = new Dictionary<int, int>();
            return CountWaysDP(n, dic);
        }

        static int CountWaysDP(int n,Dictionary<int,int> dic)
        {
            if (n == 1) return 1;
            if (n == 2) return 2;
            if (n == 3) return 4;
            if (dic.ContainsKey(n)) return dic[n];
            dic.Add(n, CountWaysDP(n - 1,dic) + CountWaysDP(n - 2,dic) + CountWaysDP(n - 3,dic));
            return dic[n];
        }
    }
}

相关文章

  • [动态规划]一次最多上3阶楼梯,最多几种上法

    问题描述 有个小孩在上楼梯,楼梯有N阶,小孩一次可上1阶、2阶、3阶。实现一个算法,计算小孩有多少种上楼梯的方式。...

  • 一次最多上3阶楼梯,最多几种上法

    问题描述 有个小孩在上楼梯,楼梯有N阶,小孩一次可上1阶、2阶、3阶。实现一个算法,计算小孩有多少种上楼梯的方式。...

  • N阶楼梯上楼问题

    题目描述 N阶楼梯上楼问题,一次可以走两阶或者一阶,问又多少种上楼方式 分析 典型的动态规划问题,N阶楼梯可以由N...

  • 7.2走楼梯

    有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶,2阶,3阶,请实现一个方法,计算小孩有多少种上楼梯的方式....

  • 三步问题

    三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯...

  • 2018-05-15 70. Climbing Stairs

    题意:爬楼梯,一次可以爬1阶或2阶,输入正数n,输出爬到n阶楼梯总共有几种策略。解题思路:方法一:动态规划DP,一...

  • 上楼梯问题

    有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。请实现一个方法,计算小孩有多少种上楼的方式。为...

  • 2018-12-05 动态规划

    线性动态规划 例子: 一个含有n阶的楼梯,一次可以走1步或2步,从底走到顶一共有几种走法? 但是显然,如下图: 会...

  • LeetCode中动态规划问题的做题记录

    常规动态规划问题 相关题目: 70.爬楼梯 70.爬楼梯 描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每...

  • leetcode上动态规划问题 java

    动态规划 70. 爬楼梯 难度简单882 收藏 分享 切换为英文 关注 反馈 假设你正在爬楼梯。需要 n 阶你才能...

网友评论

      本文标题:[动态规划]一次最多上3阶楼梯,最多几种上法

      本文链接:https://www.haomeiwen.com/subject/bywfyctx.html