当前位置: 首页 > article >正文

子矩阵的和(矩阵前缀和)

题目链接:用户登录 - C语言网

在这里可以模拟一下就知道了,
记录每个 (0,0) 到 (i,j)的矩阵和
然后区间子矩阵的和,就减去多余的部分的矩阵和就可以得到了 子矩阵的和

然后 这里最好使用 下标 1 ~ n 到 1 ~ m 存储,这样就可以方便,根据一条规律来使用即可。

初始化函数

// 初始化矩阵前缀和
inline void Init(){
    for(int i = 1;i <= n;++i)
	    for(int j = 1;j <= m;++j)
    	    s[i][j] = s[i - 1][j] + s[i][j - 1] + a[i][j] - s[i - 1][j - 1];
}

获取矩阵和函数

// 根据左上角坐标以及右下角坐标获取矩阵和
inline int getSum(PII p1,PII p2){
	int x1 = p1.x,y1=p1.y;
	int x2 = p2.x,y2=p2.y;
	return s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];
}

题解代码

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define x first
#define y second
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
using PII = pair<int,int>;
const int N = 510;
int a[N][N],s[N][N],n,m,k,ans;
// 初始化矩阵前缀和
inline void Init(){
    for(int i = 1;i <= n;++i)
	    for(int j = 1;j <= m;++j)
    	    s[i][j] = s[i - 1][j] + s[i][j - 1] + a[i][j] - s[i - 1][j - 1];
}

// 根据左上角坐标以及右下角坐标获取矩阵和
inline int getSum(PII p1,PII p2){
	int x1 = p1.x,y1=p1.y;
	int x2 = p2.x,y2=p2.y;
	return s[x2][y2] - s[x2][y1 - 1] - s[x1 - 1][y2] + s[x1 - 1][y1 - 1];
}
signed main(){
	IOS;
	cin >> n;
	m = n;
	for(int i = 1;i <= n;++i)
	    for(int j = 1;j <= m;++j)
			cin >> a[i][j];

// 初始化矩阵前缀和
	Init();
	
// 	循环遍历所有上下坐标,并获取矩阵和
	for(int i = 1;i <= n;++i){
		for(int j = 1;j <= m;++j){
			PII leftUp = PII(i,j);
			for(int x = i;x <= n;++x){
			    for(int y = j;y <= m;++y){
			    	PII rightDown = PII(x,y);
					int sum = getSum(leftUp,rightDown);
					ans = max(sum,ans);
				}
			}
		}
	}

	cout << ans << endl;
	return 0;
}

最后提交


http://www.kler.cn/a/404191.html

相关文章:

  • NVR录像机汇聚管理EasyNVR大华NVR管理平台:深耕视频监控市场的多元化兼容
  • web钩子什么意思
  • elasticsearch介绍和部署
  • 99.【C语言】数据结构之二叉树的基本知识
  • 基于深度卷积神经网络(CNN)模型的图像着色研究与应用系统实现
  • NLP论文速读(MPO)|通过混合偏好优化提高多模态大型语言模型的推理能力
  • SpringBootTest启动时出现循环依赖问题
  • 机器学习问题之一:协变量偏移(Covariate Shift)
  • 嵌入式Linux移植cJSON库
  • 基于 RBF 神经网络辨识的单神经元 PID 模型参考自适应控制
  • fca考试
  • 每天五分钟深度学习框架pytorch:神经网络模型的参数初始化操作
  • (二)Ubuntu22.04+Stable-Diffusion-webui AI绘画 中英双语插件安装
  • 括号匹配算法
  • Kafka-创建topic源码
  • Flink的Standalone集群模式安装部署
  • 【机器学习chp6】对数几率回归
  • 【AI】人工智能报告解读——中国人工智能的发展
  • #systemverilog# 关于 randomize(a) 却报 b 失败的疑问
  • pytorch经典训练流程
  • 【运维自动化-作业平台】如何使用全局变量之数组类型?
  • C#桌面应用制作计算器进阶版01
  • 空间与单细胞转录组学的整合定位肾损伤中上皮细胞与免疫细胞的相互作用
  • 稀疏最大谐波噪声比解卷积算法MATLAB实战
  • 十八:HTTP包体的传输方式(1):定长包体
  • 如何删除pdf里的任意一页?删除PDF里任意一页的几种方法