codeforces445A
DZY Loves Chessboard
DZY 喜欢棋盘,他很享受棋盘上的游戏。
他有一个 n 行和 m 列的棋盘。棋盘上的某些单元格是坏的位置,其他的是好的位置。对于每个好位置的单元格,DZY 希望在上面放一枚棋子。每枚棋子要么是白色的,要么是黑色的。在放置了所有的棋子之后,DZY 不希望两枚同色的棋子被放置于两个相邻的单元格上。如果两个单元格共享了一条公共边,则它们是相邻的。
您的任务是,在给定的棋盘上,找出任意一种适当的棋子放置方式。
输入
第一行包含了两个以空格分隔的整数 n 和 m (1 ≤ n, m ≤ 100)。
接下来的 n 行中,每行包含了一个字符串 (有 m 个字符):第 i 个字符串的第 j 个字符,要么是 ".",要么是 "-"。一个 "." 表示相应的单元格 (位于第 i 行,第 j 列) 是好的位置,而一个 "-" 表示是坏的位置。
输出
输出必须包含 n 行,每行必须包含一个字符串 (有 m 个字符)。第 i 个字符串的第 j 个字符,应当要么是 "W", "B" 要么是 "-"。字符 "W" 是指单元格上的棋子为白色,"B" 是指黑色,"-" 是指单元格是坏的位置。
如果存在多个答案,则打印它们中的任意一个。数据保证:至少存在一个答案。
示例
输入
1 1
.
输出
B
输入
2 2
..
..
输出
BW
WB
输入
3 3
.-.
---
--.
输出
B-B
---
--B
备注
在第一个示例中,DZY 放置了单个的黑色棋子。当然,放置一个白色棋子也是可以的。
在第二个示例中,全部 4 个单元格是好的位置。在示例输出中,不存在两个相同的棋子共享一条边。
在第三个示例中,不存在好位置的单元格相邻。因此,您可以只放置 3 枚棋子,无论它们的颜色如何。
sol:对于要放棋子的位置(x,y)如果x+y是奇数放W,否则放B
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) { f|=(ch=='-'); ch=getchar(); } while(isdigit(ch)) { s=(s<<3)+(s<<1)+(ch^48); ch=getchar(); } return (f)?(-s):(s); } #define R(x) x=read() inline void write(ll x) { if(x<0) { putchar('-'); x=-x; } if(x<10) { putchar(x+'0'); return; } write(x/10); putchar((x%10)+'0'); return; } #define W(x) write(x),putchar(' ') #define Wl(x) write(x),putchar('\n') const int N=105; int n,m; char Map[N]; int main() { int i,j; R(n); R(m); for(i=1;i<=n;i++) { scanf("%s",Map+1); for(j=1;j<=m;j++) { if(Map[j]=='.') { if((i+j)&1) putchar('W'); else putchar('B'); } else putchar(Map[j]); } putchar('\n'); } return 0; }
河田は河田、赤木は赤木……。
私は誰ですか。教えてください、私は誰ですか。
そうだ、俺はあきらめない男、三井寿だ!