您的位置:首页 > 其它

暑期二(D)(hdu2044)

2016-06-27 11:23 197 查看


原题


一只小蜜蜂...

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 59688    Accepted Submission(s): 21635


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

 
题意:和爬楼梯差不多。蜜蜂只能往右侧爬,求从a到b的爬行路线数。
思路:f(n)=f(n-1)+f(n-2)。到达n有两种方式,直接或间接的多爬一步。
代码

#include<stdio.h>
#include<string.h>
#include<algorithm>

using namespace std;
int main(){
long long f[55];//注意 long long
int n,a,b;
scanf("%d",&n);
while (n--){
memset(f,0,sizeof(0));
scanf("%d%d",&a,&b);
f[0]=0;f[1]=1;f[2]=2;
for (int i=3;i<=b-a;i++){
f[i]=f[i-1]+f[i-2];
}

printf("%lld\n",f[b-a]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: