Cousera作業 魔獸世界之一 備戰

2021-08-07 22:19:05 字數 2472 閱讀 4287

樣例輸入

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 headquarter

001 red lion 2 born with strength 6,1 lion in red headquarter

001 blue dragon 2 born with strength 3,1 dragon in blue headquarter

002 red wolf 3 born with strength 7,1 wolf in red headquarter

002 blue ninja 3 born with strength 4,1 ninja in blue headquarter

003 red headquarter stops ****** warriors

003 blue iceman 4 born with strength 5,1 iceman in blue headquarter

004 blue headquarter stops ****** warriors

這道題踩了無數的坑,錯誤的原因有如下:

1. 自己寫的演算法太樂色,之前呼叫了太多的次的建構函式和複製建構函式,然後time limit exceeded了,現在用了指標陣列來指向士兵物件,這樣就不用再呼叫構造和複製建構函式了。然後每個case中共有的東西(換句話說就是不用輸入的資料)可以作為公共數值在迴圈外先賦值。

2. hp和strength是相等的,這個題目裡沒寫……還以為是固定的

3. 「如果司令部中的生命元不足以製造某個按順序應該製造的武士,那麼司令部就試圖製造下乙個。如果所有武士都不能製造了,則司令部停止製造武士。」 這個邏輯有很多細節要注意,我自己也實現的非常囉嗦,**可讀性非常差。

4. 這道題是沒問題的,如果是出現了wrong answer, 一定是你自己的**出了問題, 不要有自己的蜜汁自信

使用了派生類,是因為考慮到後面更為複雜的兩題,所以為了增加一些**的可擴充性。等有空了再繼續改進**……

#include #include #include using namespace std;

const int num_of_type = 5;

//戰士區

class warrior

friend class headquarter;

};class dragon:public warrior

};class ninja:public warrior

};class iceman:public warrior

};class wolf:public warrior

};class lion:public warrior

};//基地區

class headquarter

}//獲得資源值函式

void getresourceandreset(int m)

}//造兵函式

void produce(const int time)

//找到了可以製造的士兵則結束迴圈

if(resource-order[real_round]->hp>=0)

}int time = 0;

//初始化戰士物件

dragon dragon1;

iceman iceman1;

ninja ninja1;

wolf wolf1;

lion lion1;

//初始化基地

headquarter red("red");

headquarter blue("blue");

//紅色基地指標陣列

red.order[0]=&iceman1;

red.order[1]=&lion1;

red.order[2]=&wolf1;

red.order[3]=&ninja1;

red.order[4]=&dragon1;

blue.order[0]=&lion1;

blue.order[1]=&dragon1;

blue.order[2]=&ninja1;

blue.order[3]=&iceman1;

blue.order[4]=&wolf1;

//case迴圈

for(int i = 0; i < test_set; i++)

{cout << "case:" << i+1 << endl;

//找到輸入的hp的最小值,用來判斷資源是否足夠製造任何乙個士兵

int min_requirement = 1000;

for(int j = 0; j < num_of_type; j++)

{if(hp[i][j]

魔獸世界之一 備戰

原題 題目描述 魔獸世界的西面是紅魔軍的司令部,東面是藍魔軍的司令部。兩個司令部之間是依次排列的若干城市。紅司令部,city 1,city 2,city n,藍司令部 兩軍的司令部都會製造武士。武士一共有 dragon ninja iceman lion wolf 五種。每種武士都有編號 生命值 攻...

魔獸世界之一 備戰

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

北大程式設計實習公開課程式設計作業,魔獸世界之一 備戰

魔獸世界的第乙個版本,備戰。比較簡單。因為我 take 這個課的時候,課程已經開到第八周了,這些作業已經不能提交。所以該 沒有提交通過 oj 判斷,需要大家注意一下。如果以後有人拿此 交了,沒有ac,希望能告訴下。另外,這裡我想熟悉下 vs 環境,所以 都是在 vs2013 裡寫的,提交之前可能需要...