一只小蜜蜂

Problem Description
有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。
其中,蜂房的结构如下所示。
杭电acm2044 一只小蜜蜂 - wang812689440 - panda的博客
Input
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
Output
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行。
Sample Input
2
1 2
3 6
Sample Output
1
3

分析

从1-2有1种方法,从1-3可以由1-3或1-2-3,总共2种,由1-4可由1-2-3-4或1-3-4或1-2-4总共3种,可以这样想:

想到达4必需到达3或2,然后计算到达3或2的所有路线,加起来就是所有的路线数,f(4)=f(3)+f(2);由此可以想到斐波那契数列(可参考百度百科斐波那契数列_百度百科
http://baike.baidu.com/link?url=s4co2IxRtz0Dt7gLD5B0MXMoz2K1rxWeM4rtkQtNxA_bFK3kOzrlOkDdOZNY4RiK

用斐波那契数列的方法做即可    f(n)=f(n-1)+f(n-2)

代码
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n,i,j,c,b,m;
_int64 a[51];
//VC下的64位整数
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>b>>c;
m=c-b;
a[1]=1;
a[2]=2;
for(j=3;j<=m;j++)
a[j]=a[j-1]+a[j-2];
printf("%I64d\n",a[m]);
}

}
return 0;
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章