魔獸世界之一 備戰

2021-08-19 19:16:40 字數 2473 閱讀 8240

原題:

題目描述:魔獸世界的西面是紅魔軍的司令部,東面是藍魔軍的司令部。兩個司令部之間是依次排列的若干城市。

紅司令部,city 1,city 2,……,city n,藍司令部

兩軍的司令部都會製造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五種。每種武士都有編號、生命值、攻擊力這三種屬性。

雙方的武士編號都是從1開始計算。紅方製造出來的第n個武士,編號就是n。同樣,藍方製造出來的第n個武士,編號也是n。

武士在剛降生的時候有乙個生命值。

在每個整點,雙方的司令部中各有乙個武士降生。

紅方司令部按照iceman、lion、wolf、ninja、dragon的順序迴圈製造武士。

藍方司令部按照lion、dragon、ninja、iceman、wolf的順序迴圈製造武士。

製造武士需要生命元。

製造乙個初始生命值為m的武士,司令部中的生命元就要減少m個。

如果司令部中的生命元不足以製造某個按順序應該製造的武士,那麼司令部就試圖製造下乙個。如果所有武士都不能製造了,則司令部停止製造武士。

給定乙個時間,和雙方司令部的初始生命元數目,要求你將從0點0分開始到雙方司令部停止製造武士為止的所有事件按順序輸出。

一共有兩種事件,其對應的輸出樣例如下:

1) 武士降生

輸出樣例: 004 blue lion 5 born with strength 5,2 lion in red headquarter

表示在4點整,編號為5的藍魔lion武士降生,它降生時生命值為5,降生後藍魔司令部裡共有2個lion武士。(為簡單起見,不考慮單詞的複數形式)注意,每製造出乙個新的武士,都要輸出此時司令部裡共有多少個該種武士。

2) 司令部停止製造武士

輸出樣例: 010 red headquarter stops ****** warriors

表示在10點整,紅方司令部停止製造武士

輸出事件時:

首先按時間順序輸出;

同一時間發生的事件,先輸出紅司令部的,再輸出藍司令部的。

輸入 第一行是乙個整數,代表測試資料組數。

每組測試資料共兩行。

第一行:乙個整數m。其含義為, 每個司令部一開始都有m個生命元( 1 <= m <= 10000)。

第二行:五個整數,依次是 dragon 、ninja、iceman、lion、wolf 的初始生命值。它們都大於0小於等於10000。

輸出 對每組測試資料,要求輸出從0時0分開始,到雙方司令部都停止製造武士為止的所有事件。

對每組測試資料,首先輸出"case:n" n是測試資料的編號,從1開始 。

接下來按恰當的順序和格式輸出所有事件。每個事件都以事件發生的時間開頭,時間以小時為單位,有三位。

解決:定義headquarter類進行資料的儲存和操作,用兩個陣列儲存紅藍雙方製造順序,用pointer成員變數指向當前製造的位置。

**如下:

#include#include#includeusing namespace std;

class headquarter //default constructor

headquarter (string, string, int , int); //constructor

~headquarter () {} //destructor

void showdata (); //debug

bool producing (); //producing process, return 0 if unable to produce

}; int headquarter::time=0; //set time

headquarter::headquarter(string s1, string s2[5], int s3[5], int s4) : sum(0), life(s4), pointer(-1), hasstopped(0)

}//constructor

void headquarter::showdata() ;

cin>>lif;

for (int i=0; i<5; i++) cin>>arr[i];

string redw[5]=;

string bluew[5]=;

int reds[5]=;

int blues[5]=;

headquarter red ("red", redw, reds, lif);

headquarter blue ("blue", bluew, blues, lif); //setup

cout<<"case:"< blue.showdata();

while (!red.hasstopped || !blue.hasstopped)

} return 0;

}

魔獸世界之一 備戰

自己的 include include includeusing namespace std define num 5 使用const int更好 class warror class headqurater 類的定義要寫在前面 class warror class headqurater warr...

Cousera作業 魔獸世界之一 備戰

樣例輸入 1 203 4 5 6 7 樣例輸出 case 1 000 red iceman 1 born with strength 5,1 iceman in red headquarter 000 blue lion 1 born with strength 6,1 lion in blue h...

北大MOOC第三週 005 魔獸世界之一 備戰

題目描述 include include include include includeusing namespace std typedef mapstrintmap static strintmap strength mapstrength 14 30 16 30 class warcraft ...