感觉自己方法比较笨 完全就是看一步写一步(感觉就像面向过程的开发)
void ff()函数就执行一次亵渎 唯一递归就是 当有随从死亡就再执行一次亵渎
#include <iostream>
using namespace std;
struct node{
int Blood;//血量
bool Live;//是否死亡
};
node play_me[10];//自己随从
node play_ot[10];//敌方随从
int me,ot,Magic;//me(自己随从数量)ot(敌方随从数量)Magic(亵渎次数)
void ff(){//执行一次亵渎
bool ok=false;//判断是否有随从死亡
for(int i=0;i<me;i++){//自己随从减血
if(play_me[i].Live){
play_me[i].Blood--;
if(play_me[i].Blood==0){
ok=true;
play_me[i].Live=false;
}
}
}
for(int i=0;i<ot;i++){//敌方随从减血
if(play_ot[i].Live){
play_ot[i].Blood--;
if(play_ot[i].Blood==0){
ok=true;
play_ot[i].Live=false;
}
}
}
if(ok)ff();//如果有随从死亡就再执行亵渎
}
int main()
{
int N;
cin>>N;
for(int i=0;i<N;i++){
cin>>me>>ot>>Magic;
bool result=false;//判断是否胜利
for(int j=0;j<me;j++){
cin>>play_me[j].Blood;
play_me[j].Live=true;
}
for(int j=0;j<ot;j++){
cin>>play_ot[j].Blood;
play_ot[j].Live=true;
}
for(int j=0;j<Magic;j++){//执行亵渎
ff();
for(int k=0;k<ot;k++){//判断是否胜利
if(play_ot[k].Live==false)result=true;
else result=false;
}
}
if(result){
cout<<"Legendary"<<endl;
}else{
cout<<"GG"<<endl;
}
}
}
京公网安备 11010502036488号