Yukicoder082 市松模様

問題概要

幅$W$と高さ$H$と左上の色が指定されるので市松模様を描け。
市松模様は、黒と白が交互に現れる模様である。
模様は黒を’B’、白を’W’を使って描くものとする。

$W,H\leqq50$

yukicoder082

解法

45度回転させると楽で、$(i,j)$->$(i+j,i-j)$みたいなのをかんがえればよい。 すると、マンハッタン距離の偶奇を考えれば良くなる。

計算量:$O(HW)$

ソース

    #include <bits/stdc++.h>
    using namespace std;
    
    #define FOR(i, s, e) for (int(i) = (s); (i) < (e); (i)++)
    
    int main() {
        cin.tie(0);
        ios_base::sync_with_stdio(false);
    
        int W, H; char C;
        cin >> W >> H >> C;
        string s = "BW";
        FOR(i, 0, H) {
            FOR(j, 0, W) {
                cout << s[(s[0] != C) ^ ((i + j) % 2)];
            }cout << endl;
        }
    
        return 0;
    }
Share Comments
̃Gg[͂ĂȃubN}[Nɒlj
comments powered by Disqus