头部背景图片
ranyueの月染霜华 |
ranyueの月染霜华 |

斐波那契变形

这个是最重要的假设:假设我已获得了求解这道问题的函数fib(),只要输入n是多少就能得到从1开始到a的方案
A:蜜蜂要从1走到a的方案是fib(a)
//要知道到a的方案,就要知道a-1和a-2的方案就和爬楼梯一样
B:蜜蜂要从1走到a的方案是fib(b)
所以:蜜蜂从a走到b的方案是fib(b-a);(b>a)
#include<bits/stdc++.h>

using namespace std;

//此题类似于2041  斐波那契数列  

int main(){
    int n;
    cin >> n;

    long long f[55];        //注意!数组要用 long long 型 两个整数a和b(0<a<b<50)。
    f[1] = 1; f[2] = 2;
//从三开始方案就等于前两项的和
    for (int i = 3; i <= 55; i++)
    {
//斐波那契数列,后一项等于前两项的和
        f[i] = f[i - 1] + f[i - 2];
    }


    while (n--)
    {
        int a, b;
        cin >> a >> b;
        //首先计算出从1到a点的路线和
        //在计算出1到b点的路线和
        //那么从a到b点的路线和就是两路线的差值
        //比如1到4是3条路线
        //1到3是2条路线,那么3到4就是1条路线
        cout << f[b - a] << endl;

    }
    //system("pause");
    return 0;
}