练习三 1011

来源:互联网 发布:大数据宣传片 编辑:程序博客网 时间:2024/05/29 19:10

概述:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房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;}


0 0