首页 > 解决方案 > 显示楼梯问题的步骤

问题描述

我正在尝试确定如何以自定义数量的间隔显示各个不同的爬升到 n 级台阶的方式。

例如,如果步数 = 8 并且间隔是 2 和 3,我希望显示打印出来{2,2,2,2}{2,3,3}{3,2,3}{3,3,2}。我尝试实现一种遵循递归方法的方法,我曾经计算方法的数量,但我什至认为我没有走上解决问题的正确轨道。

int recursiveMethod(int n, vector<int> intervals, vector<int> &test, vector<int> &intervalsByStep)
{
    int count = 0;

    if (n < 0)
    {            //base case 1
        return 0;
    }

    if (n == 0)
    {           //base case 2
        intervalsByStep.insert(intervalsByStep.end(), test.begin(), test.end());
        for (int i = 0; i < intervalsByStep.size(); i++)
        {
            cout << intervalsByStep.at(i);
        } 

        cout << "\n";

        test.clear();
        return 1;
    }

    for (int element : intervals)
    {
        test.push_back(element);
        count += recursiveMethod(n - element, intervals, test, intervalsByStep);
    }
    return count;
}

标签: c++algorithm

解决方案


推荐阅读