代码过不了oj,有四个数据错误
某国法律规定,只要一个由N×M 个小方块组成的旗帜符合如下规则,就是合法的国旗:
(1)从最上方若干行(至少一行)的格子全部是白色的;
(2)接下来若干行(至少一行)的格子全部是蓝色的;
(3)剩下的行(至少一行)全部是红色的;
现有一个棋盘状的布,分成了N行M列的格子,每个格子是白色蓝色红色之一,小民希望把这个布改成该国国旗,方法是在一些格子上涂颜料,盖住之前的颜色。小民很懒,希望涂最少的格子,使这块布成为一个合法的国旗。
【输入形式】
第一行是两个整数 N,M。
接下来是 N×M一个矩阵,矩阵的每一个小方块是W(白),B(蓝),R(红)中的一个。
【输出形式】
一个整数,表示至少需要涂多少块。
【样例输入】
4 5
WRWRW
BWRWB
WRWRW
RWBWR
【样例输出】
11
【数据范围】
对于100% 的数据,N,M≤50。
#include<bits/stdc++.h>
using namespace std;
int n,m;int i,j;
int W[100],B[100],R[100];
string str[100];
int main()
{
cin >> n >> m;
for(i = 1;i<=n;i++)
{
cin >> str[i];
for(j = 1;j<=m;j++)
{
if(str[i][j] != 'R')
R[i]++;
if(str[i][j] != 'W')
W[i]++;
if(str[i][j] != 'B')
B[i]++;
}
}
W[i]=W[i-1];
B[i]=B[i-1];
R[i]=R[i-1];
int count = 0;
for(i = 1;i <= n-2;i++)
{
for(j = i+1;j <=n-2;j++)
{
count =R[i]+W[i]+B[i];
}
}
cout << count;
return 0;
}
//设第 1 行到第 i 行是白色
//第 i + 1 行到第 j 行是蓝色
//则第 j + 1行到第 n 行是红色