C++ 计算由 '#' 构成的 T 字图形个数
以下是解决该问题的 C++ 代码: ```cpp #include <iostream> #include <vector> using namespace std; // 检查是否构成 T 字图形 bool isTshape(const vector<string>& matrix, int x, int y) { int n = matrix.size(); int m = matrix[0].size(); // 检查是否有竖线 if (x < 2 || matrix[x][y] != '#' || matrix[x - 1][y] != '#' || matrix[x - 2][y] != '#') { return false; } // 检查是否有横线 if (y > 0 && matrix[x][y - 1] == '#' && y < m - 1 && matrix[x][y + 1] == '#') { return true; } return false; } int main() { int n, m; cin >> n >> m; vector<string> matrix(n); for (int i = 0; i < n; ++i) { cin >> matrix[i]; } int count = 0; // 遍历矩阵 for (int i = 2; i < n; ++i) { for (int j = 1; j < m - 1; ++j) { if (isTshape(matrix, i, j)) { count++; } } } cout << count << endl; return 0; } ``` ### 代码解释: 1. **`isTshape` 函数**:该函数用于检查以 `(x, y)` 为中心的位置是否构成 T 字图形。首先检查是否有竖线(即当前位置及其上方两个位置都为 `#`),然后检查是否有横线(即当前位置左右两侧都为 `#`)。 2. **`main` 函数**: - 读取矩阵的行数 `n` 和列数 `m`。 - 读取矩阵的每一行。 - 遍历矩阵,对于每个可能的位置调用 `isTshape` 函数进行检查,如果构成 T 字图形,则计数器加 1。 - 输出 T 字图形的个数。 ######[AI问答 | 540点数解答 | 2026-05-10 15:54:31]
- 深入解析格雷码生成算法:递归求解与代码实现(DeepSeek | 443点数解答 | 2026-01-05 12:21:49)77
- 揭秘!十进制整数转其他进制用啥存储结构最合适?答案竟是它!(字节豆包 | 57点数解答 | 2024-11-13 01:21:11)258
- R国间谍小C:从S国加密信息中破译军用密码的惊险之旅(字节豆包 | 36点数解答 | 2024-10-19 16:30:40)267
- 揭秘:从十进制到衡三进制的神奇转换及Python实现(DeepSeek | 684点数解答 | 2026-01-20 17:32:06)47
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)101
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)60
- 解决代码WA问题:修改整数溢出问题后的计算代码(字节豆包 | 749点数解答 | 2026-05-10 16:20:03)6
- 修正代码解决计算 f(l, r) 和出现的 WA 问题(字节豆包 | 806点数解答 | 2026-05-10 16:21:37)6
- 星际编码大赛终极对决:机械星AI与异星人激战“逆序对”统计难题(字节豆包 | 509点数解答 | 2025-04-19 17:33:00)299
- C++实现戴夫后院抵御僵尸的植物选择策略(DeepSeek | 773点数解答 | 2026-01-19 19:20:57)68
- 高效计算逆序对:归并排序分治法详解与Python实现(阿里通义 | 1144点数解答 | 2026-03-18 17:49:11)54
- 解决 P2216 第 x 个数问题的 C++ 代码实现(字节豆包 | 368点数解答 | 2026-03-27 21:15:43)49