投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
2017-09-27 11:58
字节跳动_服务端研发工程师 0 点赞 评论 收藏
分享
刘二毛:/*
猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔,
之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。 兔子的寿命都是
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 点赞 评论 收藏
分享
关注他的用户也关注了: