B4451 [GESP202512 四级] 建造 题解

题目描述

小 A 有一张 M 行 N 列的地形图,其中第 i 行第 j 列的数字 aij​ 代表坐标 (i,j) 的海拔高度。

停机坪为一个 3×3 的区域,且内部所有 9 个点的最大高度和最小高度之差不超过 H。

小 A 想请你计算出,在所有适合建造停机坪的区域中,区域内部 9 个点海拔之和最大是多少。

输入格式

第一行三个正整数 M,N,H,含义如题面所示。

之后 M 行,第 i 行包含 N 个整数 ai1​,ai2​,...,aiN​,代表坐标 (i,j) 的高度。

数据保证总存在一个适合建造停机坪的区域。

输出格式

输出一行,代表最大的海拔之和。

输入输出样例

输入 #1复制运行

复制代码
5 5 3
5 5 5 5 5
5 1 5 1 5
5 5 5 5 5
5 2 5 2 5
3 5 5 5 2

输出 #1复制运行

复制代码
40

说明/提示

数据范围

对于所有测试点,保证 1≤M,N≤,1≤H,

AC代码

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int n,m,k,x=0;
int a[1010][1010];
bool f(int x,int y){
	if(x-y<=k){
		return true;
	}
	else{
		return false;	
	}
}
int main(){
	cin>>n>>m>>k;;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<n-1;i++){
		for(int j=1;j<m-1;j++){
			int m1=max(a[i-1][j-1],max(a[i-1][j],max(a[i-1][j+1],max(a[i][j-1],max(a[i][j],max(a[i][j+1],max(a[i+1][j-1],max(a[i+1][j],a[i+1][j+1]))))))));
			int m2=min(a[i-1][j-1],min(a[i-1][j],min(a[i-1][j+1],min(a[i][j-1],min(a[i][j],min(a[i][j+1],min(a[i+1][j-1],min(a[i+1][j],a[i+1][j+1]))))))));
			int s=a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j]+a[i][j+1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1];
			if(f(m1,m2)){
				x=max(x,s);
			}
		}
	}
	cout<<x;
	return 0;
}
相关推荐
重生之小比特4 分钟前
【初阶C++】string
开发语言·c++
Dream Cosmos6 分钟前
C++继承详解(上):继承规则、父子类转换与作用域隐藏
c++
skr爱码士6 分钟前
15_国际化和本地化:tr()、ts 文件、QM 文件、多语言切换
c++·qt·ui·客户端
speop16 分钟前
hell-gpu| TASK01-2
linux·运维·算法
汉克老师30 分钟前
CSP-J 初赛(以满分为目标):第二十一课 《树与二叉树基础—— 一棵树,为什么会成为计算机最重要的数据结构之一?》
c++·csp-j·小学生·学c++编程
Mr. zhihao35 分钟前
从数组到 B+ 树:一棵树的进化史
数据结构·innodb·b+树
别动我齐刘海1 小时前
从0到1独立搭建机器人软件系统
c++·人工智能·神经网络·opencv·目标检测·机器学习·机器人
dear_bi_MyOnly1 小时前
数组字符串深度解析:从入门到卡牌实战
开发语言·c++·学习
船厂电气自动化ai大模型1 小时前
AI大模型与数学第64课:矩阵×向量乘法(神经网络矩阵运算底层)
数据结构·深度学习·线性代数·机器学习·推荐算法
Navigator_Z1 小时前
LeetCode //C - 1223. Dice Roll Simulation
c语言·算法·leetcode