问题描述
一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房M开始爬到蜂房N,M<N,有多少种爬行路线?
要求:
【输入格式】 输入M,N的值。
【输出格式】 爬行有多少种路线。
【输入样例】 1 14
【输出样例】 377
分析:
假设从1号蜂房开始:
到1号蜂房1种路线,到2号蜂房1种路线
到3号蜂房分为从1号到和从2号到,有2种路线
到4号蜂房分为从2号到和从3号到,有3种路线
到5号蜂房分为从3号到和从4号到,有5种路线
…
实质为斐波那契数列问题。
编程如下:
#include <iostream>
using namespace std;
int main()
{
int m; //从m爬到n
int n;
cin>>m>>n;
int a[100] = {0}; //存储种类数
a[m] = 1;
a[m+1] = 1;
for(int i=m+2;i<=n;i++){
a[i] = a[i-1]+a[i-2];
}
cout<<a[n]<<endl;
}