#include <iostream>
#include <vector>
#include <string>
using namespace std;

vector<string> climbStairs(int n) {
    vector<string> res;
    if (n <= 0) {
        return res;
    }

    if (n == 1) {
        res.push_back("1");
        return res;
    }

    if (n == 2) {
        res.push_back("11");
        res.push_back("2");
        return res;
    }

    vector<string> prev = climbStairs(n-1);
    for (string s : prev) {
        res.push_back(s + "1");
    }

    vector<string> prevPrev = climbStairs(n-2);
    for (string s : prevPrev) {
        res.push_back(s + "2");
    }

    return res;
}

int main() {
    int n;
    cin >> n;
    vector<string> res = climbStairs(n);
    cout << res.size() << endl;
    for (string s : res) {
        cout << s << endl;
    }
    return 0;
}
``
小明的面前有一个 级的台阶他每次可以上一级或是两级现在他想知道每一种上台阶的方法请你告诉他。具体的请你求出有多少种上台阶的方法;对于每一种上台阶的方法请你用数字表示每一步的台阶数并将不同方法按字典序输出。例如 可行方法为 种其中 表示第一步 个台阶第二步 个台阶因此按字典序输出:输入格式输入一个正整数 表示台阶数量。输出格式第一行输出一个数 表示上台阶的方法数。之后

原文地址: https://www.cveoy.top/t/topic/iIdS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录