引入:
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房m爬到蜂房n的可能路线数。 其中,蜂房的结构如下所示。
输入格式:
输入 m,n 的值, 0<m<n<30
输出格式:
一个整数,爬行有多少种路线
输入样例:
1 14
输出样例:
377
分析:
经典递归思路,类比斐波那契数列求解。
从第三项开始,每一项都是前两项之和。
为满足递归方程,令a[1] = 1, a[2] = 1, 使得a[3] 作为起点,其值能等于2。
#include <iostream>
using namespace std;
int main()
{
int a[10001];
int m, n, l;
cin >> m >> n;
a[1]=1;
a[2]=1;
l = n - m + 1;
for(int i = 3; i < l + 1; i++){
a[i] = a[i - 1] + a[i - 2];
}
cout << a[l];
return 0;
}