#include <cstring>
#include <cmath>
#include <cctype>
#include <cstdio>
#include <iostream>
#define MAX 52
#define inf 0x3F3F3F3F
using namespace std;
int W[MAX],B[MAX],R[MAX],sum_W[MAX],sum_B[MAX],sum_R[MAX];
int main() {
int N, M;
scanf("%d %d\n", &N, &M);
char ch;
char buf[MAX];
for(int i=0; i<N; i++) {
//处理一行
fgets(buf, M+2, stdin);
for(int j =0; j<M; j++) {
switch(buf[j]) {
case 'W':++W[i];break;
case 'B':++B[i];break;
case 'R':++R[i];
}
}
}
//求和
sum_W[0]=W[0], sum_B[0]=B[0], sum_R[0]=R[0];
for(int i = 1; i < N; i++) {
sum_W[i]=sum_W[i-1]+W[i];
sum_B[i]=sum_B[i-1]+B[i];
sum_R[i]=sum_R[i-1]+R[i];
}
int min_=inf;
// 遍历
for(int i = 0; i < N-2; i++) {
for(int j = i+1; j < N-1; j++) {
for(int k = j+1; k<N; k++) {
min_=min(sum_W[N-1]-sum_W[j-1]+sum_B[j-1]+sum_B[N-1]-sum_B[k-1]+sum_R[k-1],min_);
}
}
}
cout << min_;
}
第19行, 用fgets, 全是WA, 但是本机过了样例. 如果改成gets, 就可以通过. 难道这里fgets用得不对么? 我感觉挺对的呀, M+2, 一个留给\n, 一个留给\0. 如果不对, 为啥本机上样例能过?