c++ - 显示楼梯问题的步骤
问题描述
我正在尝试确定如何以自定义数量的间隔显示各个不同的爬升到 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;
}