XJOI 1-21 数组-围棋

数组-围棋

时间:1s 空间:256M

题目描述:

给你一个黑白棋盘,棋盘上有些位置已经放了黑子或者白子,现在问你,有没有一种放置方案可以用黑子或者白子放满整个棋盘,使得没有两个相邻的格点放了同色的棋子。

输入格式:
多组测试数据

每组数据

第一行输入两个整数n,m
接下来n行每行输入一个长度为m的字符串.

一共有’W’, ‘B’, ‘?’三种字符,W表示白子,B表示黑子。’?’表示还没有放子

输出格式:
如果存在一种方案,输出”Possible”

如果不存在输出”Impossible”

约定:
1<=n,m<=100

样例输入:
3 3
W?W
??B
???
3 2
W?
??
B?

样例输出:
Possible
Impossible

#include <iostream>
using namespace std;

int main() 
{
    int n, m;
    cin >> n >> m;
    char a;
    int assign = 0;
    char start = 'B';
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        {        
            cin >> a;
            if (a != '?')
            {
                if (assign == 0)
                {                
                    assign = 1;
                    start = (i + j) % 2 == 0 ? a : (a == 'B' ? 'W' : 'B');
                }
                else
                {
                    char c = (i + j) % 2 == 0 ? start : (start == 'B' ? 'W' : 'B');
                    if (c != a)
                    {
                        cout << "Impossible" << endl;
                        return 0;
                    }
                }
            }
        }
    cout << "Possible" << endl;
    return 0;
}

img

img