此题的思路:
首先这道题是一道递推题。坦白的说,这是我遇到的第一道递推题,在刚看到这道题脑中就要了一个思路,但是在最开始,我的思路是从前往后推,到后面我才意识到,这道题,应该从后往前推导,这样换中思路想一下,题一下子就变的十分简单;总的来说,这道题应该从后往前进行逆向的递推,假设我们需要从1到49,那么我们应从49开始想,能到49就只有48和47,所以f(49)=f(48)+f(47),所以得到了一个通项f(n)=f(n-1)+f(n-2)。
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#define Max 51
using namespace std;
int main(void)
{
freopen("in.txt","r",stdin);
int N,a,b;
long long int c[Max];
cin>>N;
while(N--)
{
memset(c,0,sizeof(c));
cin>>a>>b;
int i;
if(a<b)
{
c[a]=1;
c[a+1]=1;
for(i=a+2;i<=b;i++)
c[i]=c[i-1]+c[i-2];
}
cout<<c[b]<<endl;
}
fclose(stdin);
return 0;
}