题解
2025-12-26 21:15:17
发布于:湖南
14阅读
0回复
0点赞
解题思路
输入处理:读取田野的行列数 n 和 m,以及 n×m 的种植矩阵。
遍历每株土豆:对矩阵中每个值为 1 的位置(代表有土豆),检查其九宫格范围内的植株总数。
九宫格计数:对于每个目标位置 (i,j),遍历其周围 3×3 范围内的所有位置(注意边界处理,避免越界),统计其中值为 1 的数量。
计算产量:若九宫格内植株数 ≤2,则该株产量为 3×3=9;否则为 3。累加所有植株的产量得到最终结果。
AC 代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n >> m;
vector<vector<int>> grid(n, vector<int>(m));
// 读取种植矩阵
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> grid[i][j];
}
}
long long total = 0; // 总产量(防止溢出)
// 遍历每个位置
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
if (grid[i][j] == 1) { // 该位置有土豆
int cnt = 0;
// 遍历九宫格范围(i-1到i+1,j-1到j+1)
for (int dx = -1; dx <= 1; ++dx) {
for (int dy = -1; dy <= 1; ++dy) {
int x = i + dx;
int y = j + dy;
// 确保坐标在合法范围内
if (x >= 0 && x < n && y >= 0 && y < m) {
cnt += grid[x][y];
}
}
}
// 根据九宫格内植株数计算产量
if (cnt <= 2) {
total += 9;
} else {
total += 3;
}
}
}
}
cout << total << endl;
return 0;
}
这里空空如也




有帮助,赞一个