トピックリンク: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