一隻小蜜蜂

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;
}







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