csp 201609 3 爐石傳說

2021-10-05 01:58:03 字數 1983 閱讀 2183

csp 201609-3 爐石傳說

本題給出了爐石傳說這個遊戲的部分規則,主要是說場上有兩名玩家,每位玩家由一張英雄卡和七張角色卡位。初始時英雄有30點生命和0點攻擊,由先手開始,每個回合可以執行若干次以下三種操作:

召喚隨從:玩家召喚乙個隨從進入戰場,隨從具有指定的生命值和攻擊力。

隨從攻擊:玩家控制自己的某個隨從攻擊對手的英雄或者某個隨從。

結束回合:玩家宣告自己的當前回合結束,遊戲將進入對手的回合。該操作一定是乙個回合的最後乙個操作。

隨從攻擊時攻擊者和被攻擊者均受到對方攻擊力點數的傷害。當場上任一方英雄生命值小於等於零時(生命值可為負),此時不再進行其餘操作,遊戲結束。現在要求輸出最終遊戲結果,同時給出兩位英雄剩餘生命值和各自剩餘隨從數及其生命值。

注意隨從死亡和插入隨從均需要保證隨從編號從1~n連續,這也是本題要處理的乙個關鍵點。

本題是一道模擬體,總體難度不大,但是需要用到vector中的內容,便於實現戰鬥過程中的複雜操作。如果不使用vector自帶的操作,很有可能會出現許多小問題,且**複雜。之前第一次嘗試時就是因為**太過複雜導致查錯困難,卡在了90分,使用vector對於這種複雜模擬就比較有優勢。

本題讀懂題後可以發現題意其實很簡單,只要記錄每個人當前所有手牌的攻擊力和生命值狀態,再按要求進行相應的攻擊操作。如果隨從被擊敗就直接替換下,將他後面的隨從編號依次向前移動。最終觀察哪一方英雄生命值小於等於零,則對方自然就是勝者。這裡需要注意的是插入隨從和刪除隨從,vector自帶的insert和erase函式可以完成。

綜上所述,本題關鍵是要理解題意,讀懂題目,隨後用簡潔明瞭的**實現,**過於冗長也會造成不必要的麻煩。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define maxn 30005

#define inf 1e9

using

namespace std;

struct node};

vector follow[2]

;int

main()

else

if(op ==

"attack")if

(follow[

!flag]

[b].health <=

0&& b !=0)

}else

if(op ==

"end")}

if(follow[0]

[0].health >

0&& follow[1]

[0].health >0)

else

if(follow[0]

[0].health >0)

else

if(follow[1]

[0].health >0)

cout << follow[0]

[0].health << endl;

cout << follow[0]

.size()

-1<<

" ";

for(

int i =

1; i < follow[0]

.size()

; i++

) cout << endl;

cout << follow[1]

[0].health << endl;

cout << follow[1]

.size()

-1<<

" ";

for(

int i =

1; i < follow[1]

.size()

; i++

) cout << endl;

return0;

}

CSP201609 3爐石傳說

首先根據題意,有兩個玩家角色,每個角色有乙個英雄以及至多7個隨從,可以進行召喚隨從和攻擊對方的操作,我認為本題關鍵在於資料的儲存以及理解,因為題目要求任意時刻,戰場上的隨從總是從1開始連續編號。召喚新的隨從時原來該位置及右邊的所有隨從編號都會增加 1。而當乙個隨從死亡時,它右邊的所有隨從編號都會減少...

CSP 201609 3 爐石傳說

試題編號 201609 3 試題名稱 爐石傳說 時間限制 1.0s 記憶體限制 256.0mb 爐石傳說 魔獸英雄傳 hearthstone heroes of warcraft,簡稱爐石傳說 是暴雪娛樂開發的一款集換式卡牌遊戲 如下圖所示 遊戲在乙個戰鬥棋盤上進行,由兩名玩家輪流進行操作,本題所使...

csp 201609 3 爐石傳說

試題編號 201609 3 試題名稱 爐石傳說 時間限制 1.0s 記憶體限制 256.0mb 問題描述 這裡使用暴力模擬的辦法,設定乙個結構體servent來表示英雄和隨從,為兩名選手各給乙個容量為8的servent陣列,其中0號位置代表英雄,其他位置可放置隨從,並設定乙個位置計數,表示最後乙個放...