• 阿里在线编程测验——兔子繁衍问题


    1. 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔,之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。 
    2. 兔子的寿命都是x(x>=3)年,并且生命的最后一年不繁殖。 
    3. 如果岛上的兔子多于10对,那么猎人会每年在兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。 
    请问y年(y>=3)后荒岛上所有的兔子加起来多少岁?(注意, 在条件3执行完之后)

    输入: 从命令行输入两行整数,第一行是x,第二行是y 
    输出: y年后荒岛上所有的兔子岁数的总和

     样例测试:

    x=3,y=3 返回2.

    x=4,y=6,返回14.

    思路:

    用一个vector模拟一个队列,里面存储的是兔子年龄,如果兔子到达可以生育的年龄,就将新的兔子放在队列后,初始是0岁。

    x年后,一定是队列靠前的年龄大,用一个索引来标注当前岛上所有兔子的开始下标,索引之前的都仙逝或者被带走。

    int rabbit()
    {
        int x, y;
        cin >> x >> y;
        //if (y <= 2)return y;
        
        vector<int>life;
        life.push_back(0);
        int start = 0, end;
        for (int i = 1; i <= y;i++)
        {
            end = life.size();
            for (int j = start; j < end;j++)//更新岁数
            {
                life[j]++;
                if (life[j] >= 2 && life[j]< x )//生育
                {
                    life.push_back(0);
                }
                if (life[j] >= x)start++;//仙逝
                 
            }
            end = life.size();
            if (end-start>10)
            {
                start += 2;
            }
        }
        int ret = 0;
        for (int i = start; i < end;i++)
        {
            ret += life[i];
        }
        return 2*ret;
    }
  • 相关阅读:
    Angular Material Starter App
    缺少标识符、字符串或数字
    jquery ajax post 传递数组 ,多checkbox 取值
    Circular dependencies cannot exist in RelativeLayout
    第二次作业
    第一次作业
    第一次作业
    软工实践个人总结
    第01组 Beta版本演示
    第01组 Beta冲刺(4/5)
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7406802.html
Copyright © 2020-2023  润新知