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

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

在这里可以模拟一下就知道了,

记录每个 (0,0) 到 (i,j)的矩阵和

然后区间子矩阵的和,就减去多余的部分的矩阵和就可以得到了 子矩阵的和

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

初始化函数

cpp 复制代码
// 初始化矩阵前缀和
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];
}

获取矩阵和函数

cpp 复制代码
// 根据左上角坐标以及右下角坐标获取矩阵和
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];
}

题解代码

cpp 复制代码
#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;
}

最后提交

相关推荐
AI科技星3 小时前
从ZUFT光速螺旋运动求导推出自然常数e
服务器·人工智能·线性代数·算法·矩阵
_OP_CHEN4 小时前
【算法基础篇】(五十八)线性代数之高斯消元法从原理到实战:手撕模板 + 洛谷真题全解
线性代数·算法·蓝桥杯·c/c++·线性方程组·acm/icpc·高斯消元法
独断万古他化4 小时前
【算法通关】前缀和:和为 K、和被 K整除、连续数组、矩阵区域和全解
算法·前缀和·矩阵·哈希表
3GPP仿真实验室14 小时前
【MATLAB源码】CORDIC-QR :基于Cordic硬件级矩阵QR分解
开发语言·matlab·矩阵
Σίσυφος190015 小时前
PCL 法向量估计-PCA邻域点(经典 kNN 协方差)的协方差矩阵
人工智能·线性代数·矩阵
_OP_CHEN1 天前
【算法基础篇】(五十七)线性代数之矩阵乘法从入门到实战:手撕模板 + 真题详解
线性代数·算法·矩阵·蓝桥杯·c/c++·矩阵乘法·acm/icpc
芷栀夏1 天前
CANN ops-math:从矩阵运算到数值计算的全维度硬件适配与效率提升实践
人工智能·神经网络·线性代数·矩阵·cann
种时光的人2 天前
CANN仓库核心解读:catlass夯实AIGC大模型矩阵计算的算力基石
线性代数·矩阵·aigc
Zfox_2 天前
CANN Catlass 算子模板库深度解析:高性能矩阵乘(GEMM)原理、融合优化与模板化开发实践
线性代数·矩阵
lbb 小魔仙2 天前
面向 NPU 的高性能矩阵乘法:CANN ops-nn 算子库架构与优化技术
线性代数·矩阵·架构