攜程海洋館的海豚小寶寶
題目描述:
攜程海洋館中有 n 只萌萌的小海豚,初始均爲 0 歲,每隻小海豚的壽命是 m 歲,
且這些小海豚會在 birthYear[i] 這些年份生產出一位寶寶海豚(1 <= birthYear[i] <= m),每位寶寶海豚剛出生爲 0 歲。
問 x 年時,攜程海洋館有多少隻小海豚?
輸入
n(初始海豚數)
m(海豚壽命)
海豚生寶寶的年份數量(假設爲p)
海豚生寶寶的年份1
...
海豚生寶寶的年份p
x(幾年後)
輸出
x年後,共有多少隻小海豚
樣例輸入
5
5
2
2
4
5
樣例輸出
20
代碼
#include <iostream>
using namespace std;
int main()
{
//n 海豚,海豚壽命m,海豚生寶寶的年份數量p,x年後
int n, m, p, x;
//n1表示現存的海豚,n2表示一共存在過的海豚包含死去的,由此定義數組大小
int n1,n2;
//arr2表示海豚來到世上第多少年,死去的海豚爲-1,定義足夠大來存放
int arr2[99999];
cin >> n >> m >> p;
n1 = n2 = n ;
//arr1來存放生孩子的年份
int arr1[p];
//輸入生孩子的年份
for(int i = 0; i < p; i++){
cin >> arr1[i];
}
cin >> x;
//初始化現在海豚的來到世上的第幾年,初始化爲1,表示是第一年
for(int i = 0; i < n; i++){
arr2[i] = 1;
}
//進入年份循環,循環x次,表示過去x年
for(int i = 1; i <= x; i++){
//每一年循環一邊海豚的年份
for(int j = 0; j < n2; j++){
//如果海豚年份爲-1,表示已經去世
if(arr2[j] == -1)continue;
//判斷詞海豚是否在生孩子的年份
for(int k = 0; k < p; k++){
//如果是
if(arr2[j] == arr1[k]){
n1++;
n2++;
arr2[n2-1] = 0;
}
}
//壽命到了,置爲-1,因爲初始年齡爲0,所以年齡等於存在的年份-1.
if(arr2[j] - 1 == m){
n1--;
arr2[j] = -1;
}
arr2[j]++;
}
}
cout << n1 << endl;
return 0 ;
}
遇到此類問題,但看了文章還是未解決,
評論或加 QQ:781378815