学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
在一个
n
×
n
n\times n
n×n的矩阵中, 我们会对矩阵进行两种操作:
- R R R操作:把矩阵的某一行全部涂成红色;
-
B
B
B操作:把矩阵的某一列全部涂成蓝色。
每次操作都会覆盖之前单元格的颜色。
例如上图中,第一次将第
5
5
5列所有单元格全部涂成蓝色,第二次将第
4
4
4行所有单元格涂成红色,在第二次操作中,第
4
4
4行第
5
5
5列的单元格会被重新涂成红色(覆盖原来的蓝色)。
现在给定你对矩阵进行若干次操作之后的状态,请你计算最后一次操作是哪一种操作。如果是
R
R
R操作,则输出
R
R
R,否则输出
B
B
B。
【输入】
第一行,包含一个整数
T
T
T,表示包含
T
T
T组测试数据;
每组测试数据:
第一行,包含一个正整数
n
n
n;
接下来
n
n
n行,每行一个长度为
n
n
n字符串,第
i
i
i个字符串表示矩阵第
i
i
i行的状态,保证字符串种只包含
.
.
.、
R
R
R和
B
B
B,分别表示空白(未涂色)、红色和蓝色。
【输出】
每组测试数据输出一行,一个字符,最后一次操作是
R
R
R操作,则输出
R
R
R,否则输出
B
B
B。
【输入样例】
2
8
....B...
....B...
....B...
RRRRRRRR
....B...
....B...
....B...
....B...
8
B......B
B......B
B......B
B......B
B......B
B......B
B......B
B......B
【输出样例】
R
B
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int t, n;
char g[1010][1010];
int main()
{
cin >> t;
while (t--) {
cin >> n;
for (int i=1; i<=n; i++) cin >> g[i] + 1; // 只用1维数组读入矩阵,把字符串当做字符数组读入,起始位置为1
bool flagR = false;
for (int i=1; i<=n; i++) { // 遍历n行
if (g[i][1]=='.') continue; // 剪枝
int cnt = 0;
for (int j=1; j<=n; j++) { // 检查第i行是不是全为红
if (g[i][j]=='R') cnt++; // 统计计数
if (cnt==n) { // 并判断是否等于n
flagR = true;
break;
}
}
}
if (flagR) cout << "R" << endl; //不是R操作就是B操作
else cout << "B" << endl;
}
return 0;
}
【运行结果】
2
8
....B...
....B...
....B...
RRRRRRRR
....B...
....B...
....B...
....B...
R
8
B......B
B......B
B......B
B......B
B......B
B......B
B......B
B......B
B