zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    MySql 定时完成备份
    smarty插件
    PHP字符串函数小结
    eclipse搭建maven project的spring4 spring mvc mybatis
    C#数组存入引用类型
    C#数组
    【转】Linus:利用二级指针删除单向链表
    [LeetCode] Reverse Linked List II
    ubuntu配置git
    mint安装Node.js
  • 原文地址:https://www.cnblogs.com/zsben991126/p/12109172.html
Copyright © 2011-2022 走看看