(1)题目描述
(2)算法思想
题目看起来很长,但是只要玩过游戏阅读起来很容易理解,充分理解后按照要求模拟即可没有什么难度。
需要注意的一点就是从者的位置,可以选用vector容器存储,方便召唤时的插入以及死亡时的删除。
(3)代码实现
#include<vector>
#include<iostream>
using namespace std;
struct servant {
int HP;
int ATK;
};
struct player {
int HeroHP;
vector<servant> S;
player() {
HeroHP=30;
}
};
int main() {
int id=0;
player P[2];
int turnnum;
cin>>turnnum;
for(int i=0; i<turnnum; i++) {
string order;
cin>>order;
if(order=="summon") {
int pos;
servant temps;
cin>>pos>>temps.ATK>>temps.HP;
P[id].S.insert(P[id].S.begin()+pos-1,temps);
} else if(order=="attack") {
int atkid,defid;
cin>>atkid>>defid;
if(defid==0)
P[!id].HeroHP-=P[id].S[atkid-1].ATK;
else {
P[id].S[atkid-1].HP-=P[!id].S[defid-1].ATK;
P[!id].S[defid-1].HP-=P[id].S[atkid-1].ATK;
if(P[id].S[atkid-1].HP<=0)
P[id].S.erase(P[id].S.begin()+atkid-1);
if(P[!id].S[defid-1].HP<=0)
P[!id].S.erase(P[!id].S.begin()+defid-1);
}
} else
id=!id;
}
if(P[0].HeroHP<=0)
cout<<-1<<endl;
else if(P[1].HeroHP<=0)
cout<<1<<endl;
else
cout<<0<<endl;
for(int i=0; i<2; i++) {
cout<<P[i].HeroHP<<endl;
cout<<P[i].S.size();
for(int j=0; j<P[i].S.size(); j++)
cout<<" "<<P[i].S[j].HP;
cout<<endl;
}
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)