A.リトルアルテム

テストあたりの時間制限
1秒
テストごとのメモリ制限
256メガバイト
入力
標準入力
出力
標準出力

若い男の子アルテムは、絵を描くしようとすると、彼は彼を助けるために彼の母親メディナを要求します。メディナは、彼女はあなたの助けを求めた理由です、非常に忙しいです。

アルテムは、ペイントしたい  のn × メートルのn×m個のボードを。基板の各セルは、白色または黒色に着色されるべきです。

でき  B Bが並んで隣接する少なくとも一つの白色の隣接を有する黒セルの数です。ましょう  Wが W側によって隣接する少なくとも一つのブラックネイバーを有する白血球の数です。着色が呼び出され  、良好な場合  B = W + 1件の B = W + 1。

以下に示す第1の着色を有する  Bが= 5、B = 5、  W = 4 W = 4(全ての細胞が反対の色を有する少なくとも一つの隣接を持っています)。しかし、第2の着色はないが  、それが持っているように、良好な  B = 4 B = 4、  W = 4 = 4 Wを(唯一の右下のセルは逆の色で隣接していません)。

してください、助けメディナはどの見つけるため  の良いカラーリングを。与えられた制約の下で解決策が常に存在することを保証しています。いくつかのソリューション、出力それらのいずれかがある場合。

入力

各テストは、複数のテストケースが含まれています。

最初の行は、テストケースの数を含んでい  T T(1 T 20 1≤t≤20)。次のそれぞれ  のT T線は二つの整数含ま  N M N、M(2 N M 100行の数とグリッド内の列の数- 2≤n、m≤100を)。

出力

各テストケース印刷用の  N n行、長さの各  m個の M、  I i番目のラインであり  、私あなたの着色されたマトリックスで標識された(細胞のi番目の行  のセルが黒であることを「B」を意味し、  「W」白い手段)。引用符を使用しないでください。

与えられた制約の下で解決策が常に存在することを保証しています。

入力
コピー
2 
3 2 
3 3
出力
コピー
BW 
WB 
BB 
BWB 
BWW 
BWB
注意

最初のテストケースにおいて、  B = 3W = 2。

第二のテストケースにおいて、  B = 5、 W = 4。あなたは声明の中で着色を見ることができます。

 

問題の意味: N- 行は、mは少なくとも、角柱、色ブロックそこそれぞれ反対の正方形次のBのW つ以上の。

 

コード:

書式#include <iostreamの>

書式#include <cstdioを>

書式#include <CStringの>

書式#include <cstdlib>

書式#include <cmath>

書式#include <アルゴリズム>

書式#include <セット>

書式#include <スタック>

書式#include <キュー>

書式#include <ベクトル>

名前空間stdを使用。

長い長いLLのtypedef。

メインint型()

{

    T int型;

    CIN >> T;

    しばらく(T--)

    {

        整数N、M。

        CIN >> N >> M。

        チャーS [105] [105]。

        INT ANS = 1; //便宜交互BとW

        (I ++; I <N I = 0の整数)のために

        {

            用(INT J = 0であり、j <M、J ++)

            {

                もし(ANS%2!= 0)

                {

                    S [i]は[J] = 'B'; //を埋めるB

                    ++歳;

                }

                そうしないと

                {

                    S [i]は[J] = 'W';

                    ++歳;

                }

            }

        }

        IF(N * M%2! = 0)// このとき、ブロックの奇数の合計は、直接出力することができます

        {

            (I ++; I <N I = 0の整数)のために

            {

                用(INT J = 0であり、j <M、J ++)

                    coutの<< S [i]は[J]。

                coutの<<てendl;

            }

        }

        {//他にこの時のブロックの偶数個の合計、BとW、いない限り、この時間

            S [0] [1] = 'B'; // Bは、 必要以上のW ので、最初の2つの文字が聞かせて、より多くのものをBWになるBB

            (I ++; I <N I = 0の整数)のために

            {

                用(INT J = 0であり、j <M、J ++)

                    coutの<< S [i]は[J]。

                coutの<<てendl;

            }

        }

    }

    0を返します。

}

一緒に仕事は、是非します!

おすすめ

転載: www.cnblogs.com/Keafmd/p/12669809.html