列表

详情


NC208123. 下棋

描述

L和小M在下棋。这张棋盘是n×m的。每一个格子要么是黑色的,要么是白色的。两个人轮流进行操作。小L先手。每一次可以选择一个黑色的格子,以这个格子为右下角,棋盘左上角为左上角,将这个矩阵的所有格子的颜色由黑变成白,由白变成黑。如果找不到一个黑色的格子,那么那个人就输了。

但是这个游戏小L已经连续输了一上午,就连小M也很想让小L赢他一盘

现在两个人都想让小L,请问谁能赢呢。

输入描述

第一行一个整数T,表示有T组数据。

每组数据第一行两个整数n,m,表示棋盘的大小。

接下来n行每行m个字符W(白色)或者B(黑色),描述了这个棋盘的初始状态。

1≤n,m≤500,1≤T≤20。

输出描述

对于每组的每个询问,输出一行,如果L赢输出“L”,M赢输出”M”(不含引号)。

示例1

输入:

3
2 2
BW
WW
2 2
WW
WW
2 2
WB
BW

输出:

L
M
M

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 63ms, 内存消耗: 856K, 提交时间: 2020-06-20 17:06:00

#include<iostream>
#include<cstring>
using namespace std;
int n,m;
string s[505];
int main(){
	int t;
	cin>>t;
	while(t--){
		int n,m,sum=0,sux=0;
		cin>>n>>m;
		for(int i=0;i<n;i++){
				cin>>s[i];
		}
		if(s[0][0]=='B')
		cout<<"L"<<endl;
		else cout<<"M"<<endl;
	}
}

C++11(clang++ 3.9) 解法, 执行用时: 90ms, 内存消耗: 504K, 提交时间: 2020-07-13 14:52:34

#include<iostream>
using namespace std;
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int n,m;
		char a,b;
		cin>>n>>m;
		cin>>a;
		for(int i=2;i<=n*m;i++)
		cin>>b;
		if(a=='B') cout<<"L"<<endl;
		else cout<<"M"<<endl;
	 } 
} 

上一题