Maxwell


私信TA

用户名:MaxwellWang

访问量:3322

签 名:

等  级
排  名 8711
经  验 1209
参赛次数 5
文章发表 10
年  龄 0
在职情况 学生
学  校 ***
专  业 计算机科学与技术

  自我简介:

解题思路:

注意事项:

参考代码:

#include <iostream>

using namespace std;

 

int ageMap[58];  //定义一个缓存用于存储已经计算过的值了

long long func(int);

 

int main()

{

    int n;

    while(cin >> n && n)

    {

        long long sum = func(n+2);

        cout << (sum + 1) << endl;

    }

    return 0;

}

 

 

/* age 的值 为 n+2 , 代表第一只奶牛的年龄 */

long long func(int age) 

{

     

    if(ageMap[age])                // 已经计算过了, 从缓存当中取得

        return ageMap[age];

 

    long long sum = age -3;        // 当前奶牛的孩子的数量;

    for(int i = 4; i<=age-3; ++i)  // 遍历能生产的孩子, 获取其孩子的子孙数量

         if(!ageMap[i])

           sum  += func(i);     

         else

           sum  += ageMap[i];     // 从缓存当中读取值 

 

    ageMap[age] = sum;               // 记录缓存

    return sum;

}


 

0.0分

4 人评分

  评论区

  • «
  • »