算法题-爬楼梯

题目描述

​小海是一个顽皮的少年,对于爬楼梯这种事情,他从来都不愿意一步一步走,每次上楼梯的时候,要么往上跨两级,要么往上跨三级。
对于有 n 级台阶的楼梯,小海想知道他从最下面走到最上面的方法总数。


解析

此题的切入点是,从上往下分析。找规律的方式,找到step7需要几步搞定,有点多叉树的思想。

  • 要到达Step7,可以从Step5+2 或者是Step4+3 到达。以此类推,如下图:

使用C语言实现如下

#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    int arr[n + 1];
    arr[1] = 0;
    arr[2] = 1;
    arr[3] = 1;

    for (int i = 4; i <= n; i++)
    {
        arr[i] = arr[i - 2] + arr[i - 3];
    }
    printf("The number of steps required is %d", arr[n]);
    return 0;
}

使用Python语言实现如下

def get_steps_number(num: int) -> int:

    counts: list = [0, 0, 1, 1]

    for item in range(4, num+1):
        counts.append(counts[item-2] + counts[item-3])

    print("The number of steps required is %d" % counts[num])


num = int(input("input step "))
get_steps_number(num)
posted @ 2022-05-05 21:05  烟熏柿子学编程  阅读(87)  评论(0编辑  收藏  举报