第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(3、寻找花坛)
参考程序:
#include <bits/stdc++.h>
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 count = 0;for(int sz = 2; sz <= min(N, M); ++sz) {for(int i = 0; i <= N - sz; ++i) {for(int j = 0; j <= M - sz; ++j) {char flower = grid[i][j];// 快速剪枝:先检查四个角if(grid[i][j+sz-1] != flower || grid[i+sz-1][j] != flower || grid[i+sz-1][j+sz-1] != flower) continue;bool same = true;for(int x = i; x < i + sz && same; ++x) {for(int y = j; y < j + sz && same; ++y) {if(grid[x][y] != flower) {same = false; // 一旦发现不同花,跳出}}}if(same) count++;}}}cout << count << endl;return 0;
}