二次元アレイカバー

トピックリンク:https://codeforces.com/contest/1280/problem/B

書式#include <iostreamの> 
の#include <CStringの>
 に#define int型、長い長い
 使って 名前空間はstdを、
const  int型 N = 65 ;
INT RT [N]、CT [N]、T、R、C。
チャーG [N]、[N]。

/ *
質問の意味:のみ1×X X * 1を選択するか、格子縞することができ、あなたがいずれかのステップを動き回ることができ、全体像はどのように多くの操作の必要になります。

出力MORTAL:Pはすべての時間であります
出力0:Aのすべて
出力1:1またはr番目の行または列の最初の行のまたは最初の列は、すべてのA、Cであります
出力2:すべてのA 4つの第2行目の隅又は第二の列の最後から二番目のラインのラインAであるか、または最後から二番目の行にAの完全な列を有します
出力3:上記の条件の下では満足されていない、または最初の列の最初または最後の行またはAの最後の列を有することができます
アウトプット4:上記は満足していません。
* /

INT )(解きます
{
    memset(RT、0はsizeof (RT))。
    memset(CT、0はsizeof (CT))。
    int型の合計= 0 ;
    以下のためにINT iが= 1 ; I <= R; I ++ 
    {    
        INT J = 1 ; J <= C; J ++ 
        {
            もし(G [I] [J] == ' A ' 
            {
                合計 ++ ;
                RT [I] ++ ;
                CT [J] ++ ;
            }
        }
    }
    もし(合計== 0 リターン - 1 もし(合計== R * C)
         戻り 0 ;
    もし(RT [ 1 ] == C || RT [R] == C || CT [ 1 ] == R || CT [C] == R)
         リターン 1 もし(G [ 1 ] [ 1 ] == ' A ' || G [ 1 ]、[C] == ' A ' || G [R] [ 1 ] == ' A ' || G [R] [C ] == ' A 'リターン 2 以下のためにINT iが= 2 ; I <= R; I ++ 場合(RT [I] == c)に
             戻り 2 以下のためにINT iが= 2 ; I <= C; I ++ 場合(CT [I] == R)
             リターン 2 もし(RT [ 1 ] || RT [R] || CT [ 1 ] || CT [C])
         リターン 3 復帰 4 
}

主符号付き()
{
    int型T;
    cinを >> トン。
    しばらく(t-- 
    {
        CIN >> R >> C。
        以下のためにINT iが= 1 ; I <= R; I ++ 
            CIN >> G [I] + 1 INTゾル= )(解きます。
        もし(SOL == - 1 
            裁判所未満 << " MORTAL " << てendl;
        他の
            coutの <<ゾル<< てendl;
    }
    リターン 0 ;
}

アイデアとコード出典:https://blog.csdn.net/qq_41280600/article/details/103604769

おすすめ

転載: www.cnblogs.com/biaobiao88/p/12098611.html