按照此算法,经改编后可求解任意种走法下n级台阶的问题。
#include <iostream>
using namespace std;
int scheme[20] = {0};
void Try(int i, int &num) //核心技巧就是这个&
{
int j,k; //j表示每步允许走的台阶数,k临时变量
for(j = 2; j > 0; j--)
{
if(i < j) //如果所剩台阶数小于允许走的台阶数,什么都不做
{
}
else
{
if(i == j)
num++;
else
Try(i - j, num);
}
}
}
int main()
{
int n[20] = {0};
int i = 0;
while(cin >> n[i])
i++;
for(int j = 0; j < i; j++)
{
Try(n[j], scheme[j]); //实参不需要加&
cout << scheme[j] << endl;
}
return 0;
}