数组-围棋
时间: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;
}