• cf1280B——分类讨论+模拟


    一开始想复杂了,然后写了一大堆代码,其实2的情况是判一下四个角,再判一下每一行每一列即可

    /*
    结果必定<=4
    0:所有人都是A
    1:边界一整行都是A
    2:非边界一整行/列都是A,
        角落是A 
    3:剩余情况 
    4:A被P包围
    不可能:都是P 
    */
    #include<bits/stdc++.h>
    using namespace std;
    #define N 105
    
    int r,c;
    char mp[N][N]; 
    
    
    int main(){
        int t;cin>>t;while(t--){
            cin>>r>>c;
            int flag1=0,flag2=0; 
            for(int i=1;i<=r;i++)
                for(int j=1;j<=c;j++){
                    cin>>mp[i][j];
                    if(mp[i][j]=='P')flag1=1;
                    if(mp[i][j]=='A')flag2=1;
                }
            if(!flag1){cout<<0<<'
    ';continue;}
            if(!flag2){cout<<"MORTAL"<<'
    ';continue;}
            
            //1
            int f=0;
            for(int i=1;i<=r;i++)if(mp[i][1]=='P')f=1;
            if(!f){puts("1");continue;}
            f=0;
            for(int i=1;i<=r;i++)if(mp[i][c]=='P')f=1;
            if(!f){puts("1");continue;}
            f=0;
            for(int i=1;i<=c;i++)if(mp[1][i]=='P')f=1;
            if(!f){puts("1");continue;}
            f=0;
            for(int i=1;i<=c;i++)if(mp[r][i]=='P')f=1;
            if(!f){puts("1");continue;}
            
            //2
            if(mp[1][1]=='A' || mp[1][c]=='A' || mp[r][1]=='A' || mp[r][c]=='A'){
                puts("2");continue;
            }
            f=0;
            for(int i=1;i<=r;i++){
                int flag=0;
                for(int j=1;j<=c;j++)if(mp[i][j]=='P')flag=1;
                if(!flag)f=1;
            }
            if(f){puts("2");continue;}
            f=0;
            for(int i=1;i<=c;i++){
                int flag=0;
                for(int j=1;j<=r;j++)if(mp[j][i]=='P')flag=1;
                if(!flag)f=1;
            }
            if(f){puts("2");continue;}
            
                    
            //3
            f=0;
            for(int i=1;i<=r;i++)
                if(mp[i][1]=='A' || mp[i][c]=='A')f=1;
            for(int i=1;i<=c;i++)
                if(mp[1][i]=='A' || mp[r][i]=='A')f=1;
            if(f){puts("3");continue;}
                
            puts("4");
            
            memset(mp,0,sizeof mp);
        }
    }
  • 相关阅读:
    jquery autocomplete
    hibernate 数据缓存
    Python变量类型
    Python基础语法
    Python环境搭建
    Python简介
    python下载地址
    第十、十一章,软件测试和软件演化
    第九章,软件实现
    第八章,面向对象设计
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12109172.html
Copyright © 2020-2023  润新知