練習三 1011

概述:有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請編程計算蜜蜂從蜂房a爬到蜂房b的可能路線數。

思路:典型的斐波拉契數列問題,相距N步與相距N-1步相距N-2步有關,f(n)=f(n-1)+f(n-2),沒啥好說的。

感想:這是我在本套題遇第三次這類問題。

#include <iostream>
using namespace std;
long long dp[60];
int main()
{
    dp[1] = 1;
    dp[2] = 2;
    int start, end,flag=2,temp;
    int n;
    cin >> n;
    while (n--)
    {
        cin >> start >> end;
        temp = end - start;
        if (temp < flag) cout << dp[temp] << endl;
        else
        {
            for (int i = flag + 1; i <= temp; ++i)
            {
                dp[i] = dp[i - 1] + dp[i - 2];
            }
            flag = temp;
            cout << dp[temp] << endl;
        }
    }
    return 0;
}


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