题目描述
从前,有个叫wxs的人,他每次找东西的时候,只会到自己的右边去找东西,绝对不会返回去找,有一天,他的朋友把他的宝贝放在了一个和蜂房结构一样的地区中的某个房子里面,这个时候wxs就懵逼了,需要我们的帮助,假设wxs的位置是a,他的宝贝是b,那么让我们来编写一个程序,计算一下a走到b的所有路线吧。
其中,结构如下所示。
输入
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。
输出
对于每个测试实例,请输出a到b的可能路线数,每个实例的输出占一行。
样例输入 复制
2 1 2 3 6
样例输出 复制
1 3
- 我当时写题目的时候也不懂题目意思,直到搜素蜂窝结构时候,看到了这张图。
- 根据上面我们很容易写出递归的算法,但是提交上去时间超限,其实递归比循环要花费的时间更多,因为它会重复算,你发现了吗,这其实是一个斐波拉契数列
#include<stdio.h>
int main()
{
int k,i,x,y;
long long sum[55]={0};
sum[0]=0;sum[1]=1;sum[2]=2;
for(i=3;i<=50;i++)
{
sum[i]=sum[i-1]+sum[i-2];
}
scanf("%d",&k);
for(i=0;i<k;i++)
{
scanf("%d%d",&x,&y);
printf("%lld\n",sum[y-x]);
}
return 0;
}