有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
Input输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
Output对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
Sample Input
2 1 2 3 6
Sample Output
1 3
斐波那契数列
f(n) = f(n-1) + f(n-2);
比如: 从1 到 7 = 从 1 到 5 + 从 1 到 6
1 #include <iostream> 2 3 using namespace std; 4 //f(n) = f(n-1) + f(n-2) 5 int fib(int n) 6 { 7 int ans; 8 if(n == 1) 9 ans = 1; 10 else if(n == 2) 11 ans = 2; 12 else ans = fib(n-1) + fib(n-2); 13 return ans; 14 } 15 16 int main() 17 { 18 int n; 19 long long fib[55]; 20 fib[0] = 1; 21 fib[1] = 1; 22 fib[2] = 2; 23 for(int i = 2;i <= 50;i++) 24 { 25 fib[i] = fib[i-1] + fib[i-2]; 26 } 27 while(cin >> n) 28 { 29 while(n--) 30 { 31 int a, b; 32 cin >> a >> b; 33 b = b - a; 34 cout << fib[b] << endl; 35 } 36 } 37 return 0; 38 }