题意:找出最后一步画笔的颜色
其实刚开始看到这个题的时候,思路也是正确的,直接就是最简单的暴力:
1、对于第一行中的每一个点,如果不是’.‘,那么就往下搜索
2、对于第一列中的每一个点,如果不是’.',那么就往右搜索
凭着这样的思路,我WA了6此,硬是一直没有找出来问题,后来做完E题后发现,我把情况考虑错了
因为蓝色只能竖着涂,红色只能横着涂,我误认为两个颜色可以横着涂也可以竖着涂了,比如这种情况
BBBBBBBB
……
按照我原来的输出,它应该是B,但是有可能最终答案是R,因为这一行是多个竖着的B形成的
总结:一定需要看清题目意思!!!
AC代码
#include <bits/stdc++.h>
using namespace std;
#define de(x) cout<<x<<" ";
#define Pu puts("");
#define sf(x) scanf("%d",&x);
typedef long long ll;
const int N=2e2+10,mod=100003;
const int inf=0x3f3f3f3f;
int n,m,ans;
char s[N][N];
int fun(){
int f;
char ch;
for(int i=1;i<=8;i++){
if(s[i][1]=='.'||s[i][1]=='B') continue;
ch=s[i][1];
f=1;
for(int j=1;j<=8;j++){
if(s[i][j]!=ch) {f=0;break;}
}
if(f==1){
// if(ch=='R') return 1;
return 1;
}
}
for(int i=1;i<=8;i++){
if(s[1][i]=='.'||s[1][i]=='R') continue;
ch=s[1][i];
f=1;
for(int j=1;j<=8;j++){
if(s[j][i]!=ch) {f=0;break;}
}
if(f==1){
// if(ch=='R') return 1;
return 2;
}
}
}
int main(){
cin>>n;
while(n--){
for(int i=1;i<=8;i++){
cin>>(s[i]+1);
}
if(fun()==1) printf("R\n");
else if(fun()==2) printf("B\n");
}
}