问题遇到的现象和发生背景
遇到的现象和发生背景,请写出第一个错误信息
【输入】
共n+1行。
第一行为两个整数n和m(n,m<=5),分别表示矩阵的行数和列数。
接下来n行,每行m个字符,分别表示字符矩阵中的每个字符。
【输出】
一个整数,表示'#'构成的T字图形个数。
【输入样例1】
3 3
###
#
【输出样例1】
1
【输入样例2】
3 5
**##*
#####
###
【输出样例2】
3
【输入】
共n+1行。
第一行为两个整数n和m(n,m<=5),分别表示矩阵的行数和列数。
接下来n行,每行m个字符,分别表示字符矩阵中的每个字符。
【输出】
一个整数,表示'#'构成的T字图形个数。
【输入样例1】
3 3
###
#
【输出样例1】
1
【输入样例2】
3 5
**##*
#####
###
【输出样例2】
3
引自强大而免费的微信小程序:皆我百晓生。
题目要求计算'#'构成的T字图形个数。根据题目描述,我们首先需要读取输入的矩阵,并统计出T字图形的数量。
我的解答思路如下:
以下是我实现的C++代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<vector<char>> matrix(n, vector<char>(m));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> matrix[i][j];
}
}
int count = 0;
for (int i = 1; i < n - 1; i++) {
for (int j = 1; j < m - 1; j++) {
if (matrix[i][j] == '#') {
if (matrix[i-1][j] == '#' && matrix[i+1][j] == '#' && matrix[i][j-1] == '#' && matrix[i][j+1] == '#') {
count++;
}
}
}
}
cout << count << endl;
return 0;
}
注意:在代码中,由于题目要求T字图形至少有3个'#',所以在遍历矩阵时,我们从第二行到倒数第二行,从第二列到倒数第二列。这样可以防止越界访问。