HDU 2044 一只小蜜蜂...
Problem Description
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
![](http://acm.hdu.edu.cn/data/images/C40-1001-1.jpg)
其中,蜂房的结构如下所示。
![](http://acm.hdu.edu.cn/data/images/C40-1001-1.jpg)
Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
Sample Input
2
1 2
3 6
Sample Output
1
3
题目大意:if(不是英文) 略;
大致思路:1→2没什么好说的,3→6的路线数可以看成1→4,都从1出发的话,由递归f(1)=1,f(2)=2,f(3)=3,f(4)=5得出递推关系f(n)=f(n-1)+f(n-2)。详见代码。
#include<iostream> using namespace std; #include<cstring> int main() { int i,a,b,n,T; long long f[50]; cin>>T; while(T--) { memset(f,0,sizeof(f)); f[1]=1; f[2]=2; for(i=3;i<50;i++)//从3开始递推 f[i]=f[i-1]+f[i-2]; cin>>a>>b; cout<<f[b-a]<<endl; } return 0; }