csp 201609 3 爐石傳說

2021-10-06 23:01:17 字數 2343 閱讀 6897

試題編號:

201609-3

試題名稱:

爐石傳說

時間限制:

1.0s

記憶體限制:

256.0mb

問題描述:

這裡使用暴力模擬的辦法,設定乙個結構體servent來表示英雄和隨從,為兩名選手各給乙個容量為8的servent陣列,其中0號位置代表英雄,其他位置可放置隨從,並設定乙個位置計數,表示最後乙個放置了角色的位置。

對於三種操作,召喚隨從則將陣列中的後續隨從右移。

攻擊操作,需要在攻擊結束後判斷角色是否死亡,若死亡則部分角色左移,這裡注意不能把英雄角色去除掉。

因為每一回合結束操作的發出者會發生變化,所以這裡使用兩個指標來指向兩個操作者,一旦出現end操作需要調換指標指向內容。

在這裡#include 

#include

#include

using

namespace std;

int n, turn, position, to, res, p1, p2;

struct servents[3

][8]

;void

summon()

if(turn ==1)

p1++

;else

p2++

;scanf

("%d"

,&position);if

(s[turn]

[position]

.atack!=

0&& s[turn]

[position]

.atack !=0)

else

}scanf

("%d %d"

,&s[turn]

[position]

.atack,

&s[turn]

[position]

.life);}

void

attack()

if(pos !=

0&& num !=0)

s[to]

[pos -1]

.atack =

0, s[to]

[pos -1]

.life =0;

}}num =

0, pos =0;

if(s[turn]

[a].life <=0)

if(pos !=

0&& num !=0)

s[turn]

[pos -1]

.atack =

0, s[turn]

[pos -1]

.life =0;

}}intmain()

if(res ==

0&& s[1]

[0].life <=

0&& s[2]

[0].life >0)

res =-1

;if(res ==

0&& s[2]

[0].life <=

0&& s[1]

[0].life >0)

res =1;

} cout << res << endl;

cout << s[1]

[0].life << endl;

cout << p1 <<

" ";

for(

int i =

1; i <=

7; i++)if

(s[1

][i]

.life !=0)

cout << s[1]

[i].life <<

" ";

cout << endl;

cout << s[2]

[0].life << endl;

cout << p2 <<

" ";

for(

int i =

1; i <=

7; i++)if

(s[2

][i]

.life !=0)

cout << s[2]

[i].life <<

" ";

cout << endl;

return0;

}插入**片

csp 201609 3 爐石傳說

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

CSP201609 3爐石傳說

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

CSP 201609 3 爐石傳說

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