有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
##
这道题其实就是一个斐波那契数列问题,不同的是它的变量可以用前后输入两个数的差值来表示。注意的是它不能往回走,所以当输入的前一个数比后面那个数大的时候,输出为0;不能用递归,会超时,可以用打表的方式记录;最后是数据类型为long long,因为到后面数字会很大。
#include<stdio.h>
int main()
{
int x,m,n,t,i,p;
long long a[50];
for (i=0;i<50;i++)
{
if (i<3)
a[i]=i;
else
a[i]=a[i-2]+a[i-1];
}
scanf ("%d",&x);
while(x--)
{
scanf ("%d%d",&m,&n);
if (m>n)
{
printf ("0\n");
continue;
}
t=n-m;
printf ("%lld\n",a[t]);
}
return 0;
}