2044--一隻小蜜蜂

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章