codeforces445A

DZY Loves Chessboard

 CodeForces - 445A 

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

#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('
')
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('
');
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/gaojunonly1/p/10580526.html