求求大佬检查一下啦!(只有3 AC)
查看原帖
求求大佬检查一下啦!(只有3 AC)
886055
MoonCake2011楼主2023/1/12 11:55
#include<bits/stdc++.h>
using namespace std;
int n,m,ans,W,R;
char s[60][60];
int main(){
   cin>>n>>m; 
   for(int i=1;i<=n;i++){
   	for(int j=1;j<=m;j++){
   		cin>>s[i][j];
   	}
   	getchar();
   }
   for(int i=1;i<=m;i++){
   	if(s[1][i]!='W'){
   		ans++;
   	}
   	if(s[n][i]!='R'){
   		ans++;
   	}
   }
   int maxb=-1,maxn;
   for(int i=2;i<n;i++){
   	int sum=0;
   	for(int j=1;j<=m;j++){
   		if(s[i][j]=='B'){
   			sum++;
   		}
   	}
   	if(maxb<sum){
   		maxb=sum;
   		maxn=i;
   	}
   }
   for(int i=1;i<=m;i++){
   	if(s[maxn][i]!='B'){
   		ans++;
   	}
   }
   int w=0;
   for(int i=2;i<n;i++){
   	int w1=0,b1=0,r1=0;
   	if(i==maxn){
   		w++;
   		continue;
   	}
   	for(int j=1;j<=m;j++){
   		if(s[i][j]=='W') w1++;
   		if(s[i][j]=='B') b1++;
   		if(s[i][j]=='R' && (i>maxn)) r1++;
   	}
   	if(b1==max(max(w1,b1),r1)){
   		w++;
   		W+=m-b1;
   	}
   	else if(w==0){
   		W+=m-max(max(w1,b1),r1);
   	}
   	else W+=m-b1;
   }
   int r=0;
   for(int i=n-1;i>1;i--){
   	int w1=0,b1=0,r1=0;
   	if(i==maxn){
   		r++;
   		continue;
   	}
   	for(int j=1;j<=m;j++){
   		if(s[i][j]=='W' && (i<maxn)) w1++;
   		if(s[i][j]=='B') b1++;
   		if(s[i][j]=='R') r1++;
   	}
   	if(b1==max(max(w1,b1),r1)){
   		r++;
   		R+=m-b1;
   	}
   	else if(r==0){
   		R+=m-max(max(w1,b1),r1);
   	}
   	else R+=m-b1;
   }
   ans+=min(R,W);
   cout<<ans;
   return 0;
}
2023/1/12 11:55
加载中...