一只小蜜蜂...

来源:互联网 发布:仙女下凡无人知 编辑:程序博客网 时间:2024/05/01 16:04

一只小蜜蜂…

Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 156 Accepted Submission(s) : 59


Problem Description

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房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]。但需要注意的一点是,当b-a很大的时候,普通的int数组储存空间不足以储存路径数,所以可以用 long long 类型去定义数组,代码已AC。

AC代码:

#include<iostream>using namespace std;int main(){    int t, a, b;    long long f[55];    cin>>t;    f[1] = 1;    f[2] = 2;    for(int i=3; i<=55; i++)    {        f[i] = f[i-1] + f[i-2];    }    while(t--)    {        cin>>a>>b;        cout<<f[b-a]<<endl;    }    return 0;}

来自:最帅的算法工程师

原创粉丝点击