Input
WWWBWWBW
B B B B B B B B
WWWBWWBW
WWWBWWBW
WWWBWWBW
WWWBWWBW
WWWBWWBW
WWWBWWBW
Output
3
Input
WWWWWWWW
B B B B B B B B
WWWWWWWW
WWWWWWWW
WWWWWWWW
WWWWWWWW
WWWWWWWW
WWWWWWWW
Output
1
我为大家提供一种思路:
题目要求求出the minimum amount of rows and columns that Kalevitch has to paint on the white chessboard to meet the client’s requirements.
那肯定是竖直的白线条与水平白线条数量的总和
那么我们可以先遍历每一行的字符串
只要有八个B那么这一行就全是白线条,水平白线条数量加一
如果没有八个B的话,那么肯定是竖直白线条的数量
最后答案便是竖直和水平白线条的总和
这题这样想的话就会很简单
下面是cpp的代码
#include <iostream>
using namespace std;
int main()
{
char arr[11][11];//定义这个8乘8的字符矩阵
for (int i = 0; i < 8; i++) {
cin>>arr[i];//每行输八个字符,一共输八行
}
int a=0;//a是水平方向全白的行数
int v=0;//v是竖直方向全白的列数
//接下来要去遍历每一行字符串,有白色的个数,如果有八个,说明这一行全白,那么水平方向全白的行数加一
int t;//t用来计数每行有多少个白色块
for (int i = 0; i < 8; i++) {
t = 0;//别忘了每判断一行,都要把t重新归零
for (int j = 0; j < 8; j++) {
if (arr[i][j] == 'B')
t++;
}
if (t == 8)
a++;
else
v = t;
}
cout << a + v << endl;
return 0;
}
以下是我补充的C语言的代码(用的是同一个道理)
#include <stdio.h>
#include <string.h>
int main()
{
char arr[11][11];//定义这个8乘8的字符矩阵,arr可以开大一点
for (int i = 0; i < 8; i++) {
scanf("%s",arr[i]);//每行输八个字符,一共输八行
}
int a=0;//a是水平方向全白的行数
int v=0;//v是竖直方向全白的列数
//接下来要去遍历每一行字符串,有白色的个数,如果有八个,说明这一行全白,那么水平方向全白的行数加一
int t;//t用来计数每行有多少个白色块
for (int i = 0; i < 8; i++) {
t = 0;//别忘了每判断一行,都要把t重新归零
for (int j = 0; j < 8; j++) {
if (arr[i][j] == 'B')
t++;
}
if (t == 8)
a++;
else
v = t;
}
printf("%d\n",a+v);
return 0;
}