这个是最重要的假设:假设我已获得了求解这道问题的函数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;
}