有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請編程計算蜜蜂從蜂房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;
}