1 条题解

  • 0
    @ 2023-2-23 16:50:06

    【例67.1】 爬楼梯

    解题思路

    f[k]表示走到第k阶的方案。最后一步来自k-1或k-2,故f[k]=f[k-1]+f[k-2],f[0]=1、f[1]=1。预处理到30后读多组查询。

    正确性说明

    依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。

    易错点

    输入没有组数,读到EOF;每行一个结果。

    复杂度

    预处理O(30),每查询O(1),空间O(30)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long f[31] = {1, 1};
        for (int i = 2; i <= 30; i++)
            f[i] = f[i - 1] + f[i - 2];
        int n;
        while (cin >> n)
            cout << f[n] << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    432
    时间
    1000ms
    内存
    256MiB
    难度
    普及−
    标签
    递交数
    0
    已通过
    0
    上传者