思路:
1.一开始没有看清题目,以为只要每个各有一行就行了(眼瞎)
2.搞清楚题目的意思之后,再看N、M的数据都很小
3.可以看成一道a+b+c=50的题,a、b、c的变动通过for循环来实现,然后输出最小值。
#include <cstdio>
#include <iostream>
using namespace std;
int n,m,cnt,ans[1111111],result;
char s[111][111];
void check(int begin,int end,char A)
{
for(int i=begin;i<=end;i++)
{
for(int j=1;j<=m;j++) if(s[i][j]!=A) ans[cnt]++;
//cout<<i<<" "<<ans[cnt]<<endl;
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) cin>>s[i][j];
cnt=1;
for(int i=1;i<=n-2;i++)
{
for(int j=i+1;j<=n-1;j++)
{
check(1,i,'W');
check(i+1,j,'B');
check(j+1,n,'R');//cout<<ans[cnt]<<endl;
cnt++;
}
}
result=ans[1];//cout<<ans[1]<<endl;
for(int i=2;i<=1111111;i++)
{
if(ans[i]==0) break;
if(ans[i]<result)
{
//cout<<ans[i];
result=ans[i];
}
}
cout<<result<<endl;
return 0;
}