【题解】hdu2044一只小蜜蜂
2024-10-14 23:25:07
斐波拉契数列的应用
题目
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房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[i]表示相隔距离为i 的两个房间之间的路线数;
我们发现,若要到达第i个房间,则会通过第i-1,i-2号房间,而从i-1和i-2房走到第I号房有分别只有一种路线;
所以,f[i]=f[i-1]+f[i-2]
代码
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define ll long long
#define re register int
#define fp(i,a,b) for(re i=a,I=b;i<=I;++i)
#define fd(i,a,b) for(re i=a,I=b;i>=I;--i)
#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);
using namespace std;
ll f[50];
inline ll solve(int a){
if(a==1) return 1;
if(a==2) return 2;
for(register int i=3;i<=a;i++) f[i]=f[i-1]+f[i-2];
return f[a];
}
int main(){
//file("s");
int n;
cin>>n;
f[1]=1;
f[2]=2;
for(register int i=1;i<=n;++i) {
int a,b;
cin>>a;
cin>>b;
cout<<solve(b-a)<<endl;
}
return 0;
}
最新文章
- Java全角、半角字符的关系以及转换
- SQL初级第三课(下)
- C#数据结构
- getResource().getPath()返回的路径空格变成了 %20
- Maven测试
- .frm文件
- 自定义滚动条CSS样式
- c#基础编程—泛型
- Python番外 事务 那些事
- [SOJ]Easy sort (归并排序)
- Java的精确整数计算-Bigdecimal学习总结和工具类
- Core Mvc传值Query、Form、Cookies、Session、TempData、Cache
- python系统编程(二)
- Houdini技术体系 基础管线(一) : Houdini与Houdini Engine的安装
- 转:IIS 应用程序池 内存 自动回收
- BAI度 内部资料!Python_Threads多线程
- Bootstrap CustomBox 弹层
- Man&#39;s Best Friend: The Science Behind the Dog and Human Relationship
- AndroidManifest.xml文件详解(activity)(四)
- 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral,解决