一只小蜜蜂

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房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
解题思路
这道题和下面的E题还是挺像的,如果会写D题,那么就会写E题。问有几种方式可以到达目的地,以第二个样例为例,有多少种方法可以到达6处呢,因为它只能从左往右走,所以要想到达6处,有两种情况,从4到6和从5到6,那么是不是就可以这样想:有了到达5的路线条数和到达4的路线条数,两者之和就是到达6的路线条数。从5到达6只有一种方式,从4到达6虽有两种方式,但其中一种已经在到达5里面了,所以只要求出来到达4和5的路线条数即可。那么仿照上述往前推,到达5可以跟据到达3和4求出。。。。就可以得出一个规律:f(x)=f(x-1)+f(x-2),一眼看出前两项来,答案就出来了。简直是perfect!!!but我自己想也想不出来啊。哈哈哈哈哈哈(小菜偷偷溜走e...)
代码
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <string.h>
#include <iostream>
#include <vector>

using namespace std;

int n;
int main()
{     long long arr[55];     arr[1]=0;     arr[2]=1;     arr[3]=2;      for(int i=4;i<50;i++)         arr[i]=arr[i-1]+arr[i-2];     int a,b;     cin>>n;     while(n--)     {         cin>>a>>b;         cout<<arr[b-a+1]<<endl;     }     return 0;
}


全部评论

相关推荐

头像
11-09 17:30
门头沟学院 Java
TYUT太摆金星:我也是,好几个华为的社招找我了
点赞 评论 收藏
分享
10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务