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; } }