我改了一下,用这个,你那个读入字符,系统可能判断有误
```c
#include <stdio.h>
int main()
{
int cnt = 0, n, m, i, j, k, p, num, min = 100000;
char c, flag[100][100] = { 0 };
scanf("%d %d", &n, &m);
for (i = 1; i <= n; i++) {
scanf("%s",flag[i]);
}
for (i = 1; i <= n - 2; i++) {
for (j = i + 1; j <= n - 1; j++) {
cnt = 0;
for (p = 1; p <= i; p++) {
for (k = 0; k < m; k++) {
if (flag[p][k] != 'W') {
cnt++;
}
}
}
for (p = i + 1; p <= j; p++) {
for (k = 0; k < m; k++) {
if (flag[p][k] != 'B') {
cnt++;
}
}
}
for (p = j + 1; p <= n; p++) {
for (k =0; k < m; k++) {
if (flag[p][k] != 'R') {
cnt++;
}
}
}
if (cnt < min) {
min = cnt;
}
}
}
printf("%d", min);
return 0;
}
```
by telankesi @ 2022-12-26 23:06:13
哪位大佬知道为啥他这个读入有问题,麻烦@一下我,求教
by telankesi @ 2022-12-26 23:08:03
@[telankesi](/user/866969) 加一个`getchar()`就好了
by OoXiao_QioO @ 2022-12-27 07:38:01
```cpp
#include <stdio.h>
int main()
{
int cnt = 0, n, m, i, j, k, p, num, min = 100000;
char c, flag[100][100] = { 0 };
scanf("%d %d", &n, &m);
getchar();
for (i = 1; i <= n; i++) {
scanf("%s",flag[i]);
}
for (i = 1; i <= n - 2; i++) {
for (j = i + 1; j <= n - 1; j++) {
cnt = 0;
for (p = 1; p <= i; p++) {
for (k = 0; k < m; k++) {
if (flag[p][k] != 'W') {
cnt++;
}
}
}
for (p = i + 1; p <= j; p++) {
for (k = 0; k < m; k++) {
if (flag[p][k] != 'B') {
cnt++;
}
}
}
for (p = j + 1; p <= n; p++) {
for (k =0; k < m; k++) {
if (flag[p][k] != 'R') {
cnt++;
}
}
}
if (cnt < min) {
min = cnt;
}
}
}
printf("%d", min);
return 0;
}
```
@[telankesi](/user/866969)
by OoXiao_QioO @ 2022-12-27 07:38:37
@[telankesi](/user/866969) 因为会读入换行啊,建议不要轻易用 ```scanf``` 读入字符
by sunyizhe @ 2022-12-27 08:23:41