题目背景:
解法一:
#include<iostream>
using namespace std;
int main()
{
long long getStep(int, int);
int n,a,b;
cin>>n;
while(n--)
{
cin>>a>>b;
cout<<getStep(a,b)<<endl;
}
return 0;
}
long long getStep(int a, int b)
{
b = b - (a-1); //实际上相当于只有1个参数b,a到b换算成从1到t(t这里就是更新后的b,a就为1),步骤都一样
if(b == 2)
{
return 1;
}
if(b == 3)
{
return 2;
}
long long f1 = 1;
long long f2 = 2;
long long step;
for(int i=3; i<b; i++)
{
step = f1 + f2;
f1 = f2;
f2 = step;
}
return step;
}
解法二:
#include<iostream>
using namespace std;
int main()
{
int n,a,b;
long long resultArray[52];
resultArray[0] = 0;
resultArray[1] = 1;
resultArray[2] = 2;
for(int i=3; i<52; i++)
{
resultArray[i] = resultArray[i-1] + resultArray[i-2];
}
cin>>n;
while(n--)
{
cin>>a>>b;
cout<<resultArray[b-a]<<endl;
}
return 0;
}
结果分析:
通过这个简单的例子可以看出,利用数组存储计算过程的好处:
1:代码简洁
2:效率高,只要计算一次,则所有的计算结果都放在里面了,后面只需要到对应的位置去取数据即可。
3:逻辑简单、思路清晰