攜程校招——攜程海洋館的海豚小寶寶(C++)

⭐ 文章鏈接: www.mengyingjie.com/archives/37/ ⭐

攜程海洋館的海豚小寶寶

題目描述:

攜程海洋館中有 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章