1. 程式人生 > >一只小蜜蜂(斐波那契dp)

一只小蜜蜂(斐波那契dp)

表示 print 輸入數據 for while event out nss isp

有一只經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請編程計算蜜蜂從蜂房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
題解:由於到達第i個蜂房只能從左上或右下到達,則到達第i個蜂房方法書為dp[i]=dp[i-1]+dp[i-2];
技術分享圖片
 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 #include<stack>
 5 #include<queue>
 6 #include<iostream>
 7 #include<map>
 8 #include<vector>
 9 #define ll long long
10 #define PI acos(-1.0)
11 using namespace std;
12
int main() 13 { 14 ll m,n,t; 15 ll str[1234]={0,1,1}; 16 for(ll i=3;i<=50;i++) 17 str[i]=str[i-1]+str[i-2]; 18 scanf("%d",&t); 19 while(t--) 20 { 21 scanf("%lld%lld",&m,&n); 22 23 printf("%lld\n",str[n-m+1]); 24 } 25 return
0; 26 }
View Code

一只小蜜蜂(斐波那契dp)