試題編號:
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,簡稱爐石傳說 是暴雪娛樂開發的一款集換式卡牌遊戲 如下圖所示 遊戲在乙個戰鬥棋盤上進行,由兩名玩家輪流進行操作,本題所使...