一只小蜜蜂(斐波那契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];
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
本文来自博客园,作者:左手边五十米,转载请注明原文链接:https://www.cnblogs.com/moomcake/p/9343428.html