提交时间:2026-06-14 14:17:55
运行 ID: 91661
#include <iostream> #include <vector> using namespace std; int main() { int n, m; cin >> n >> m; vector<vector<char>> grid(n, vector<char>(m)); // 读取网格 for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> grid[i][j]; } } int ans = 0; // 枚举左上角 (i,j) for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { // 枚举边长 len,最小为2 // 最大边长:向下、向右不越界 int max_len = min(n - i, m - j); for (int len = 2; len <= max_len; ++len) { char target = grid[i][j]; bool ok = true; // 遍历当前正方形所有格子 for (int x = i; x < i + len && ok; ++x) { for (int y = j; y < j + len && ok; ++y) { if (grid[x][y] != target) { ok = false; } } } if (ok) ans++; } } } cout << ans << endl; return 0; }