問題概要
幅$W$と高さ$H$と左上の色が指定されるので市松模様を描け。
市松模様は、黒と白が交互に現れる模様である。
模様は黒を’B’、白を’W’を使って描くものとする。
$W,H\leqq50$
解法
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; }