Maxwell


私信TA

用户名:MaxwellWang

访问量:3138

签 名:

等  级
排  名 8275
经  验 1191
参赛次数 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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区