有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
其中,蜂房的结构如下所示。
2 1 2 3 6
1 3
数据是有限的,注意int的范围不能满足要求,导致溢出,会wrong answer。改为long long 或_int64即可。采用斐波拉契数列递归法解题。
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
long long c[50]={0,1,2};
for(int i=3;i<50;i++)
{
c[i]=c[i-1]+c[i-2];
}
int n;
cin>>n;
while(n--)
{
int a,b;
cin>>a>>b;
cout<<c[b-a]<<endl;
}
return 0;
}