列表

详情


NC221031. 走火入魔的小g

描述

小g是一个喜欢爬楼梯的人,刚开始他只会一阶一阶的走,逐渐的变成了一次走两阶,三阶,但小g最近已经走火入魔,不会一阶一阶的走楼梯了,请你算一算,小g从平台(认为是在第0阶),走到第n阶楼梯的方案数。

输入描述

输入数据仅有一个整数n

输出描述

输出小g走上第n阶的方案数

示例1

输入:

1

输出:

0

说明:

小g无法走到第1阶台阶,因为他只会走两阶或三阶

示例2

输入:

5

输出:

2

说明:

小g此时可以通过(0->2->5)或者(0->3->5)走到第5阶

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang11) 解法, 执行用时: 5ms, 内存消耗: 368K, 提交时间: 2021-04-23 19:18:18

#include<stdio.h>
int climb(int n)
{
    if(n==1) return 0;
    if (n == 2 || n == 3) return 1;
    else return climb(n - 2) + climb(n - 3);
}
int main()
{
    int s,t;
    scanf("%d",&s);
    t=climb(s);
    printf("%d",t);
}

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 396K, 提交时间: 2023-08-09 09:03:41

#include <bits/stdc++.h>
using namespace std;
int f[53];
int main(){
    int n;
    cin>>n;
    f[1]=0;
    f[2]=f[3]=1;
    for(int i=4;i<=n;i++) f[i]=f[i-2]+f[i-3];
    cout<<f[n];
    return 0;
}

Python3 解法, 执行用时: 40ms, 内存消耗: 4600K, 提交时间: 2022-04-08 08:14:50

n = int(input())
a = []
a.append(0)
a.append(1)
a.append(1)
if n <= 3:
    print(a[n-1])
else:
    for i in range(3,n+1):
        a.append(a[i-2]+a[i-3])
    print(a[n-1])

上一题