有一楼梯共m级,若每次只能跨上1或2或3,要走上第m级,共有多少走法?
很容易想到
f(m) = f(m-1)+f(m-2)+f(m-3)
递归的思路出来了。
静下心来想
如果不想用递归,那就从1,2,3开始,想想应该跳到第4级。
f(1) = 1;
f(2) = 2;
f(3) = 4;
f(4) = f(1)+f(2)+f(3); /./=7
//故
int a[m+1];
a[0] = 0;
a[1] = 1;
a[2] = 2;
a[3] = 4;
for ( int i=4; i<=m; i++){
a[i] = a[i-1] + a[i-2] + a[i-3];
}
int result = a[m+1];
测试源码:
#include <iostream>
int main(int argc, const char *argv[])
{
int a[11];
a[1] = 1;
a[2] = 2;
a[3] = 4;
for ( int i=4; i<=10; i++ )
{
a[i] = a[i-1] + a[i-2] + a[i-3];
}
std::cout << a[10] << std::endl;
return 0;
}
//输出 274