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

有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房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

猜你喜欢

转载自www.cnblogs.com/moomcake/p/9343428.html