概述:有一隻經過訓練的蜜蜂只能爬向右側相鄰的蜂房,不能反向爬行。請編程計算蜜蜂從蜂房a爬到蜂房b的可能路線數。
思路:典型的斐波拉契數列問題,相距N步與相距N-1步和相距N-2步有關,f(n)=f(n-1)+f(n-2),沒啥好說的。
感想:這是我在本套題遇第三次這類問題。
#include <iostream>
using namespace std;
long long dp[60];
int main()
{
dp[1] = 1;
dp[2] = 2;
int start, end,flag=2,temp;
int n;
cin >> n;
while (n--)
{
cin >> start >> end;
temp = end - start;
if (temp < flag) cout << dp[temp] << endl;
else
{
for (int i = flag + 1; i <= temp; ++i)
{
dp[i] = dp[i - 1] + dp[i - 2];
}
flag = temp;
cout << dp[temp] << endl;
}
}
return 0;
}