获赞
368
粉丝
9
关注
0
看过 TA
6
东南大学
2018
C++
IP属地:未知
暂未填写个人简介
私信
关注
2017-08-21 20:07
已编辑
字节跳动_服务端研发工程师
题目描述: 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔,之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。 兔子的寿命都是x(x>=3)年,并且生命的最后一年不繁殖。 如果岛上的兔子多于10对,那么猎人会每年在兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。 请问y年(y>=3)后荒岛上所有的兔子加起来多少岁? 输入: 从命令行输入两行整数,第一行是x,第二行是y 输出: y年后荒岛上所有的兔子岁数的总和 我的思路:维护一个队列or链表,每年新加入的兔子从队尾加入,死掉的兔子总...
刘二毛:/* 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔, 之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。 兔子的寿命都是 x(x >= 3)年,并且生命的最后一年不繁殖。 如果岛上的兔子多于10对,那么猎人会每年在 兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。请问y年(y >= 3)后荒岛上所有 的兔子加起来多少岁 ? 输入 : 从命令行输入两行整数,第一行是x,第二行是y输出 : y年 后荒岛上所有的兔子岁数的总和 */ //看题主题目做得,具体对不对不知道 #include <iostream> #include <vector> using namespace std; void getresult(int x, int y){ vector<int> v; v.push_back(0); //v.push_back(0); int num = 1; int age = 0; while (y--){ for (int i = 0; i < v.size(); i++){ if (v[i] >= 0) v[i]++;//活着的和寿命已满的加一岁。 } int len = v.size(); for (int i = 0; i < len; i++){ if (v[i] == x){ v[i] = -2; num--; //-2代表这一年没有生育能力 } //else if (v[i] == x - 1); else if (v[i] >= 2){ //大于等于两岁的生一对,存在数组中 v.push_back(0); num++; } } //如果兔子数量超过10只带走最老的或者死掉的最老的。 if (num > 10){ num--; int j = 0; while (v[j] == -2) j++;//-4代表被带走的。 v[j] = -2; } } for (int i = 0; i < v.size(); i++){ if (v[i] > 0){ age += v[i];//活着的岁数相加 } } cout << 2*age << endl;//一对是两只,所以乘以2 } int main1(){ int x; int y; cin >> x; cin >> y; getresult(x, y); return 0; }
投递阿里巴巴等公司10个岗位 >
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务