题目描述 小海是一个顽皮的少年,对于爬楼梯这种事情,他从来都不愿意一步一步走,每次上楼梯的时候,要么往上跨两级,要么往上跨三级。 对于有 n 级台阶的楼梯,小海想知道
小海是一个顽皮的少年,对于爬楼梯这种事情,他从来都不愿意一步一步走,每次上楼梯的时候,要么往上跨两级,要么往上跨三级。
对于有 n 级台阶的楼梯,小海想知道他从最下面走到最上面的方法总数。
解析
此题的切入点是,从上往下分析。找规律的方式,找到step7需要几步搞定,有点多叉树的思想。
- 要到达Step7,可以从Step5+2 或者是Step4+3 到达。以此类推,如下图:
#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)