题解 | #教科书般的亵渎#

教科书般的亵渎

https://ac.nowcoder.com/acm/problem/21442

感觉自己方法比较笨 完全就是看一步写一步(感觉就像面向过程的开发)
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;
        }
    }
}
全部评论
可以哦,一点不笨,我还想不出来呢
点赞 回复
分享
发布于 2023-04-02 18:34 广西

相关推荐

团子 行业运营 n*15.5
点赞 评论 收藏
转发
1 1 评论
分享
牛客网
牛客企业服务