算法796. 子矩阵的和——二维前缀和
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法796. 子矩阵的和——二维前缀和相关的知识,希望对你有一定的参考价值。
算法概述
- 前缀和s的存储:存的是ij点与(0,0)围成的和。
s[i][j]=s[i-1][j]+s[i][j-1]+g[i][j]-s[i-1][j-1];
- 输入x1y1,x2y2求面积:
cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
代码
#include<iostream>
using namespace std;
const int N=1005;
int s[N][N];
int main()
{
int n,m,q;
cin>>n>>m>>q;
int g[N][N];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>g[i][j];
s[i][j]=s[i-1][j]+s[i][j-1]+g[i][j]-s[i-1][j-1];
}
}
while(q--)
{
int x1,y1,x2,y2;cin>>x1>>y1>>x2>>y2;
//x2y2 - x1-1y2 - x2y1-1 + x1-1y1-1
cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]<<endl;
}
return 0;
}
以上是关于算法796. 子矩阵的和——二维前缀和的主要内容,如果未能解决你的问题,请参考以下文章