#include<bits/stdc++.h>
using namespace std;
int n,m,w[60],b[60],r[60],minn=2525,ans;
char maps[60][60];
int main(){
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++){
cin>>maps[i][j];
if (maps[i][j]=='R'){
w[i]++;
b[i]++;
}
if (maps[i][j]=='W'){
r[i]++;
b[i]++;
}
if (maps[i][j]=='B'){
r[i]++;
w[i]++;
}//记录每一行如果要涂成w/b/r要多少次
}//Ex:例题数据可得人w[2]=3 意为如果第二行要全涂成白色需要三次
for (int i=1;i<=n-2;i++){//w 1到i
ans=0;//分边界讨论 w/b/r后面跟的是范围
for (int j=i+1;j<=n-1;j++){//b i+1到j r j+1到n
int k;
for (k=1;k<=i;k++)//w
ans+=w[k];
for (k=i+1;k<=j;k++)//b
ans+=b[k];
for (k=j+1;k<=n;k++)//r
ans+=r[k];
minn=min(minn,ans);//更新答案
}
}
cout<<minn;
return 0;
}
只对了前三个
求助