CSP201609 3爐石傳說

2021-10-05 02:31:41 字數 1932 閱讀 8070

首先根據題意,有兩個玩家角色,每個角色有乙個英雄以及至多7個隨從,可以進行召喚隨從和攻擊對方的操作,我認為本題關鍵在於資料的儲存以及理解,因為題目要求任意時刻,戰場上的隨從總是從1開始連續編號。召喚新的隨從時原來該位置及右邊的所有隨從編號都會增加 1。而當乙個隨從死亡時,它右邊的所有隨從編號都會減少 1。所以隨從的位置是動態變化的,所以在這裡採用相當於動態陣列的vector來儲存,根據vector物件的常用內建函式可以很容易實現題目要求的動態變化。c++vector操作

每個回合結束,即每次遇到end操作,需要進行角色的替換rolenum=1-rolenum。

最後輸出結果的時候注意最後結果為5行,所以需要在輸出先手方和後手方的存活的隨從個數和各隨從的生命值的迴圈之後加上cout<

#include

#include

#include

using

namespace std;

struct node//節點 };

intmain()

else

if(s==

"attack"

)//隨從攻擊

role[rolenum]

[a].health-

=role[

1-rolenum]

[d].attack;

role[

1-rolenum]

[d].health-

=role[rolenum]

[a].attack;

if(role[rolenum]

[a].health<=0)

//隨從死亡

if(role[

1-rolenum]

[d].health<=0&&

!hero)

}else

if(s==

"end"

)//結束回合}if

(role[0]

[0].health>

0&& role[1]

[0].health>0)

//遊戲未結束

else

if(role[0]

[0].health>

0&& role[1]

[0].health<=0)

//先手勝

else

if(role[0]

[0].health<=

0&& role[1]

[0].health>0)

//後手勝

cout<

[0].health<

//先手方

int ans=role[0]

.size()

; cout<

1<<

" ";

for(

int i=

1;i.size()

;i++

)else

} cout<

cout<

[0].health<

//後手方

int ans1=role[1]

.size()

; cout<

1<<

" ";

for(

int i=

1;i.size()

;i++

)else

} cout<

return0;

}

csp 201609 3 爐石傳說

csp 201609 3 爐石傳說 本題給出了爐石傳說這個遊戲的部分規則,主要是說場上有兩名玩家,每位玩家由一張英雄卡和七張角色卡位。初始時英雄有30點生命和0點攻擊,由先手開始,每個回合可以執行若干次以下三種操作 召喚隨從 玩家召喚乙個隨從進入戰場,隨從具有指定的生命值和攻擊力。隨從攻擊 玩家控制...

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號位置代表英雄,其他位置可放置隨從,並設定乙個位置計數,表示最後乙個放...