题目9:一只青蛙一次可以跳上一级台阶,也可以跳上两级。求该青蛙跳上一个n级台阶总共有多少种情况。
#include <iostream>
using namespace std;
//N 代表目标数字
#define N 10
class Solution
{
private:
int * mNumArray = new int[N + 1];
int mSteps[2];
int mArrayIndex = 0;
public:
Solution()
{
memset(mNumArray, 0 , sizeof(int)*(N + 1));
mSteps[0] = 1;
mSteps[1] = 2;
}
//回溯法
void Jump(int steps)
{
if (steps == N)
{
Print();
return;
}
else if (steps > N)
return;
for (int i = 0; i < 2; ++i)
{
mNumArray[mArrayIndex++] = mSteps[i];
Jump(steps + mSteps[i]);
mNumArray[--mArrayIndex] = 0;
}
}
void Print()
{
for (int i = 0; i < mArrayIndex; ++i)
{
cout <<mNumArray[i] << " ";
}
cout <<"\n\n"<< endl;
}
~Solution()
{
delete[] mNumArray;
}
};
int main()
{
Solution solution;
solution.Jump(0);
return 0;
}