关注
题目描述: 1. 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔,之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。 2. 兔子的寿命都是x(x>=3)年,并且生命的最后一年不繁殖。 3. 如果岛上的兔子多于10对,那么猎人会每年在兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。 请问y年(y>=3)后荒岛上所有的兔子加起来多少岁?(注意, 在条件3执行完之后) 输入: 从命令行输入两行整数,第一行是x,第二行是y 输出: y年后荒岛上所有的兔子岁数的总和 输入: x //兔子的寿命 y //若干年以后 输出: n //所有兔子的年龄之和 思路: 结构体:兔子年龄和最大年龄 遍历Y年{ 每只年龄在2-(maxAge-1)之间的兔子都生只兔子(两只生两只,就是一只生一只); 年龄>=maxAge的兔子仙逝; 若岛上只数>20只,则带走年龄最大的4只兔子。 } 累加岛上兔子年龄。 */ #include<iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Rab
{
int age;
int maxAge;
};
void AgeAdd(vector<Rab> &sum) {
vector<Rab>::iterator it;
for (it = sum.begin(); it != sum.end(); it++) {
it->age++;//年龄加1
}
}
void Dead(vector<Rab> &sum) {
vector<Rab>::iterator it;
for (it = sum.begin(); it != sum.end();) {
if (it->age >= it->maxAge)//达到最大年龄,仙逝
it = sum.erase(it);
else
it++;
}
}
void Birth(vector<Rab> &sum, int x) {
vector<Rab>Temp;
vector<Rab>::iterator it;
for (it = sum.begin(); it != sum.end(); it++) {//每一对兔子每年生一对兔子,相当于每一年每一只兔子生一只兔子
if (it->age >= 2 && it->age < it->maxAge)//年龄在两岁到最大岁减一之间可以生小兔
{
Rab newborth = { 0, x };
Temp.push_back(newborth);
}
}
for (vector <Rab>::iterator iter = Temp.begin(); iter != Temp.end(); iter++){
sum.push_back((*iter));
}
//以下是上述for循环的简略写法,参考auto在容器中的用法
//for (auto x : Temp)
// sum.push_back(x);
}
int main()
{
int x, y;//寿命和年数
cin >> x >> y;
//Rab R1 = { 0, x };//公
Rab R2 = { 0, x };//母
vector<Rab> sum;
sum.push_back(R1);
//sum.push_back(R2);
for (int i = 0; i < y; i++) {//遍历年数,一共y年
AgeAdd(sum);//年龄增长
Dead(sum);//兔子仙逝
Birth(sum, x);//兔子出生
if (sum.size() > 20) {//兔子数多于十对,带走两对最老的
sum.erase(sum.begin());
sum.erase(sum.begin());
sum.erase(sum.begin());
sum.erase(sum.begin());
}
}
int num = 0;
for (vector <Rab>::iterator iter = sum.begin(); iter != sum.end(); iter++){
num = num + (*iter).age;
}
//以下是上述for循环的简略写法,参考auto在容器中的用法
//for (auto x : sum)
//num = num + x.age;
cout << num << endl;
}
查看原帖
点赞 6
相关推荐
点赞 评论 收藏
分享
2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
14075次浏览 189人参与
# 我的省钱小妙招 #
37531次浏览 446人参与
# 论秋招对个人心气的改变 #
15074次浏览 206人参与
# 机械人避雷的岗位/公司 #
44641次浏览 315人参与
# 程序员找工作至少要刷多少题? #
22809次浏览 285人参与
# 工作前VS工作后,你的心态变化 #
38358次浏览 266人参与
# 为了减少AI幻觉,你注入过哪些设定? #
7016次浏览 197人参与
# 通信/硬件求职避坑tips #
139866次浏览 1086人参与
# 你的mentor是什么样的人? #
51419次浏览 727人参与
# 牛客AI体验站 #
8850次浏览 221人参与
# 毕业论文进行时 #
27602次浏览 153人参与
# 你现在会用到哪些AI技能? #
24756次浏览 137人参与
# 运营来爆料 #
77358次浏览 467人参与
# 应届生进小公司有什么影响吗 #
118680次浏览 1162人参与
# 找实习多的是你不知道的事 #
1789052次浏览 20670人参与
# 运营人的第一份offer应该如何选 #
218851次浏览 1260人参与
# 我现在比当时_,你想录用我吗 #
9923次浏览 136人参与
# 哪一瞬间让你觉得工作好累 #
75697次浏览 431人参与
# 一张图晒一下你的AI员工 #
6203次浏览 138人参与
# AI Coding的使用心得 #
5946次浏览 123人参与
查看12道真题和解析