永州市网站建设_网站建设公司_网站开发_seo优化
2026/1/1 17:54:07 网站建设 项目流程

一、先看原题:

二、题目解析:

1、📖 故事背景(先让孩子懂题目)

小 A 有一张地形地图 🗺️
这张地图是一个M 行 N 列的大棋盘。

  • 每一个小格子里,都有一个数字

  • 数字代表这个地方的海拔高度 ⛰️


🚁 停机坪的建造规则

停机坪是一个3 × 3 的正方形区域

□ □ □ □ □ □ □ □ □

要想在这里建停机坪,必须满足:

1️⃣ 这 9 个格子中
👉最高海拔 - 最低海拔 ≤ H

2️⃣ 在所有可以建停机坪的区域中
👉 找到一个海拔总和最大的


🎯 题目要我们做什么?

👉在整张地图上,找所有 3×3 的小正方形

👉 判断哪些“合格”

👉 在合格的里面,选海拔总和最大的那个

👉 输出这个最大总和


2、🧠 整体思路(先有“大地图”)

我们用一句话总结:

🧩“枚举每一个 3×3 → 统计最大值、最小值、总和 → 判断 → 取最大”


3、🧱 一步一步拆解(非常关键)

✅ 第一步:用二维数组存地图

int a[1010][1010];

👉a[i][j]表示:
i行、第j列的高度


✅ 第二步:枚举每一个 3×3 的左上角

如果地图是M × N

  • 行最多到:M - 2

  • 列最多到:N - 2

for (int i = 1; i <= M - 2; i++) { for (int j = 1; j <= N - 2; j++) { // (i, j) 是 3×3 的左上角 } }

🧒 可以这样理解:

👉 停机坪不能“出界”
👉 左上角不能贴到最底、最右


✅ 第三步:检查这个 3×3 区域

在一个 3×3 里,我们要记住三件事:

  • local_max:最大高度

  • local_min:最小高度

  • local_sum:高度总和

int local_max = a[i][j]; int local_min = a[i][j]; int local_sum = 0;

🔍 第四步:真正“扫”这个 3×3

for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { int height = a[i + x][j + y]; local_sum += height; if (height > local_max) local_max = height; if (height < local_min) local_min = height; } }

🧒 可以想象成:

小 A 拿着放大镜 🔍
把这 9 个格子一个一个看一遍


✅ 第五步:判断能不能建停机坪

if (local_max - local_min <= H) { if (local_sum > max_sum) { max_sum = local_sum; } }

如果起伏不大
✔ 而且总和更大
👉 就更新答案!


4、🧠 完整参考程序

#include <iostream> using namespace std; int a[1010][1010]; int main() { int M, N, H; cin >> M >> N >> H; for (int i = 1; i <= M; i++) { for (int j = 1; j <= N; j++) { cin >> a[i][j]; } } int max_sum = 0; for (int i = 1; i <= M - 2; i++) { for (int j = 1; j <= N - 2; j++) { int local_max = a[i][j]; int local_min = a[i][j]; int local_sum = 0; for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { int height = a[i + x][j + y]; local_sum += height; if (height > local_max) local_max = height; if (height < local_min) local_min = height; } } if (local_max - local_min <= H) { if (local_sum > max_sum) { max_sum = local_sum; } } } } cout << max_sum; return 0; }

5、🧠 这道题在考什么?

🎯 核心能力清单

  • ✅ 二维数组建模

  • ✅ 多层 for 循环

  • ✅ 局部最大 / 最小值

  • ✅ 枚举思想(暴力但合理)

  • ✅ 边界控制(M-2,N-2


6、🎒 给小学生的“记忆口诀”

🧠停机坪四步走

1️⃣ 找左上
2️⃣ 扫 3×3
3️⃣ 算最大最小
4️⃣ 合格就更新答案


🎉 结尾总结

🌟 这是一道“看起来难,其实很规矩”的好题
🌟代码耐心 + 条理性是得分的关键


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询